機能概要

APIとは「アプリケーション・プログラミング・インターフェース(Application Programming Interface)」の略称です。

今回は、WebAPIという仕組みとなり、PHPで作成したAPIにリクエスト(要求)を出すと値を受け取れるようになります。
そして、受け取った値をもとにHTMLやJavascriptを利用し、画面を生成します。

フロントエンド(html/javascript)とバックエンド(php)に分離し、フロントエンド側では「デザインやユーザーエクぺリエンスを高める」ことに集中し、バックエンド側では、「複雑なプログラムなどを構築」します。そのため、それぞれ役割分担することが可能になります。

プログラミングコード

「webapi-news_v1.html」フロントエンド:API読み出しページ

  • 6行目:「外部jqueryファイル」を読み込み、jQueryが使用できるようにします。(今回の仕組みは、jQueryライブラリを活用しています)
  • 8~18行目:「javascript」の関数「mj_api()」を作成します。
  • 9行目:テキストボックスの「txt_no」から、表示させたい「news_no」取得し、変数「rec_txt_no」に格納します。
  • 10行目:phpのAPIのリンクを変数「url」に登録します。その際に、引数「no」に変数「rec_txt_no」を付けます。
  • 11行目:JSONファイルから値を受け取ります。
  • 12~16行目:値を「divタグ」の「disp_text」にinnerHTMLを利用して画面上に出力します。
  • 23行目:イベント「onclick」する時に「mj_api()」を実行します。
<!DOCTYPE html>
<html lang="ja">
<head>
    <meta charset="utf-8">
    <title>sample</title>
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.2.4/jquery.min.js"></script>
    <script language="javascript" type="text/javascript">
    function mj_api(){
        var rec_txt_no = document.getElementById("txt_no").value;
        url = "webapi-news_v1.php?no="+rec_txt_no;
        $.getJSON(url, (data) => {
            disp_text.innerHTML = "";
            disp_text.innerHTML += "status:" + data["status"] + "<br>";
            disp_text.innerHTML += "new_no:" + data["new_no"] + "<br>";
            disp_text.innerHTML += "title_kj:" + data["title_kj"] + "<br>";
            disp_text.innerHTML += "article_kj:" + data["article_kj"] + "<br>";
        });
    }
</script>
</head>
<body>
    <div>ニュース情報を取得<br></div>
    <input type="text" id="txt_no"><input type="button" name="btn_send" value="送信" onclick="mj_api()">
    <div id="disp_text"></div>
</body>
</html>

「webapi-news_v1.php」バックエンド:APIファイル

  • 2行目:配列「$arr_data」を配列として宣言します。
  • 7~9行目GETで値を受け取った場合に配列「$seq_no」に値を入力します。
  • 8行目:引数「no」の値が入ってる、かつ数字なのかを分岐処理しています。
  • 9~14行目:配列「$arr_data」に値を入力します。「new_no」や「title_kj」のように名前がキーとなるため重要です。(連想配列)
  • 23行目:「header」関数を使用して、jsonファイルということが分かるようにヘッダーを登録します。
  • 24行目:json_encode()」を用いて、配列をJSONファイルに変換します。
<?php
$arr_data = array();

//GETで値を受け取る
if($_SERVER['REQUEST_METHOD'] === 'GET'){
    $seq_no = $_GET['no'];
}
if(isset($seq_no) && ctype_digit($seq_no)) {
    $arr_data = [
        "status" => "OK"
        ,"new_no" => intval($seq_no)
        ,"title_kj" => "ここにタイトルが入ります。"
        ,"article_kj" => "ここに本文が入ります。"
    ];
} else {
    $arr_data = [
        "status" => "NG"
        ,"new_no" => intval($seq_no)
        ,"title_kj" => ""
        ,"article_kj" => ""
    ];
}
header('content-type: application/json; charset=utf-8');
echo json_encode($arr_data );
?>

演習問題

  1. 上記のコードを使用して、ファイル作成し、動作するようにしてみよう。
  2. 上記のプログラムにデータベース接続し、テキストボックスの値(数字)を変更すると値が変化するように変更してみよう。