独身必見!婚活のためのWebAPI!!


この記事は、株式会社バルテック アドベントカレンダー用の記事となります。よろしくお願いします。

はじめに

みなさんこんにちは。
バルテック入社2年目の前原(のぶ)です!

最近、WebAPIについて調べる機会があり
おもしろいAPIを発見したので、紹介したいと思います。

そもそもWebAPIとは??

WebAPIって、聞いたことあるけどどんなものかわからない。。
という方もいるのではないでしょうか。

ざっくり説明すると

Web上で使用できる、誰かが作った便利な機能

のことです。
はい、ざっくりすぎますよね。

詳しく知りたい方は下記リンクか、グーグル先生に問い合わせましょう。すみません。。
<a href="http://e-words find out.jp/w/Web_API.html" target="_blank">Web API 【 Web Application Programming Interface 】

合コンサーチAPI

今回紹介するAPIは、合コンサーチAPIというものです。
これは、リクエストをURLに送ると
婚活パーティーがどこで・何時に・予約状況は?・内容は?等のデータを返してくれるという、WebAPIとしては非常にシンプルなAPIです。

簡単に使えて、婚活パーティー情報を取得できる!!
独身の身ならこれは使うべき!

ということで簡単にプログラムを組んで、実際に合コンサーチAPIを使用したWebアプリケーションを触ってもらいたいと思います。

合コンサーチAPIデモ

・・・
・・

Jquery + Ajaxでかっこつけて意気揚々とプログラムを組んでいたのですが
クロスドメイン制約というものに引っかかってしまったので
急きょPHPで実装しました。
下記リンクにデモを置きましたので、使ってみてください。

 合コンサーチAPI demo 

おわかりいただけたでしょうか。
都道府県を選択して、検索するボタンをクリックすると、婚活パーティー情報が表示されるはずです。

今回使用したPHPのソース(一部省略)はこちらです。

// POSTでデータが送信されたら
if(!empty($_POST['pref'])) {
  $pref = $_POST['pref'];

  // GETパラメータで都道府県を指定する
  $url = "http://goucon.jp/top/api/get?results=3&pref=" . $pref;

  // PHPで送信するcurlの準備
  $curl = curl_init();
  curl_setopt($curl,CURLOPT_URL,$url);
  curl_setopt($curl,CURLOPT_RETURNTRANSFER,true);

 // curlを実行・レスポンスを受け取る
  $response = curl_exec($curl);

  // 返却されたxmlを格納する
  $result = simplexml_load_string($response);
}

GETパラメータで取得したいデータを指定してあげて(ここでは都道府県)、その後、curlコマンドを実行しAPI側にリクエストを送信 → レスポンスを受け取っているのがわかります。
これが一般的で、最もシンプルなWebAPIの使い方となります。

JqueryとAjaxで作ってみる

かっこつけてJquery + Ajaxで実装しようとすると、以下のようになります。(*注意* きちんと動作しませんがイメージとしてはこんな感じ)

<script>
$(document).ready(function($){
  $pref = $('[name=pref]');
  // セレクトボックスが変更されたら
  $pref.change(function() {
    // 選択された値を取得
    var prefVal = $pref.val();
    var url = "http://goucon.jp/top/api/get?results=3&pref=";
    var result = "";

    // 非同期通信でリクエストを送信
    $.ajax({
      type: "GET",
      url: url + prefVal,
    }).done(function(data) {
      result = data['result'];
    }).fail(function(data) {
      alert("データを取得できませんでした!");
    });
  });
});
</script>

こちらも、PHPで実装したやり方と同じで
GETパラメータを設定し、その後リクエストを送信 → レスポンスを受け取っています。

簡単ですね!!!!!!!!!

おわりに

今回紹介した合コンサーチAPIの他にも、ネット上にはいろいろなWebAPIが転がっています。
自分が興味のあるWebAPIを探し出し、それを使用してWebアプリケーションを作ってみるのもいいかもしれません。

また、WebAPIを使用する際は
各API毎に、守るべき注意事項がありますので、それに従って使用しましょう。(大体APIのドキュメントに書いてあるはず)

と、いうわけで今回は以上となります。
ここまで読んでくれた皆さま、ありがとうございました!

参考にしたサイト

1件のコメント

  1. JSONPで渡せばクロスドメイン制約を回避できますよ。
    $.ajax({
    (略)
    ‘dataType’: ‘jsonp’,
    (略)
    })

    Reply
    • jdonpで何故か回避できなかったんですよね。。
      また今度試してみます。コメントありがとうございます!

      Reply
  2. `json_decode(json_encode(simplexml_load_string`
    xmlにパースしてjsonにエンコードしてjsonにデコードですか?
    こんなコード見たら なんで!って白目むいちゃいます
    (そもそもformat指定できるみたいだYO!)

    Reply
    • コメントありがとうございます。
      まじめに返信すると、

      simplexml_load_string関数はxmlにパースする。
      ではなく、xmlをオブジェクトに変換するという関数で、
      http://php.net/manual/ja/function.simplexml-load-string.php

      オブジェクトに変換した後に、jsonにエンコードして、デコードしなおすと
      簡単にさっくりxmlデータを配列に変換できるという技らしいです!(僕も仕事中ググって見つけました。。)

      下記サイトを参考にしました。
      https://www.softel.co.jp/blogs/tech/archives/5210
      http://hamamuratakuo.blog61.fc2.com/blog-entry-964.html

      じゃあそもそもjson形式で受け取ればいいじゃん!!
      ってことなんですが、今回はリクエストを送るURL

      var url = “http://goucon.jp/top/api/get?results=3&pref=”

      の部分をシンプルにわかりやすくしたかったので、
      なるべくGETパラメータを減らそうと思い、format指定はせずデフォルトのままxmlを受け取るという形になっております。。

      Reply
  3. レスありがとう!
    パーサーなんでオブジェクトに変換するでもパースするでもどっちでもいいんじゃないかと
    あと、そのままのobjectを使わないで強引に配列にしてまで配列で使いたい理由ってなんでしょう???
    張ってくれたブログ見てもメリットが見当たらないで!
    シンプルにするならformat指定してjson_decodeだけしたほうがよほどシンプルじゃないかな!?

    Reply
    • 確かに配列にしなくてもいいですね!
      ということで直してみました。

      $result = simplexml_load_string($response);

      フォーマットはデフォルトのまま、エンコードデコードという無駄処理も省いてシンプル!!
      コメントありがとうございます。

      Reply

Leave a Comment.