簡単なAPIを作ってみる

APIを作ってみる動機は

  • 複数のサイトで同じデータベースを共有したい
  • データベースの同期は面倒

サーバーAのサーバーにデータを載せて、これだけを更新し、他のサーバー(サーバーB)はAPIを介して情報をサーバーAから取得する仕組みを作ってみた。

  • サーバーAには、サーバーBからのリクエストに対して、JSONで返す。
  • リクエストはGETで、ターゲットは http://サーバーA/api.php


サーバーAに置くapi.php:

<?php
	/* 認証 */
	if(!認証)
	{
		return null;
		exit;
	}

	/* GETで受け取るパラメータから、送るデータを処理 */
	$resultJSON='{
	"response": "some response here"}';

	header("Content-Type: application/json; charset=utf-8");

	echo $resultJSON;
?>

サーバーBから送るリクエスト request.php

<?php
	$params=array("パラメータA"=>"値A", ...)
	foreach ($params as $k => $v){ $encoded_params[] = urlencode($k).'='.urlencode($v); }  

	$url='http://サーバーA/api.php?'.implode('&',$encoded_params);
	$curl_handle = curl_init();
	curl_setopt($curl_handle, CURLOPT_URL, "$url");
	curl_setopt($curl_handle, CURLOPT_CONNECTTIMEOUT, 2);
	curl_setopt($curl_handle, CURLOPT_RETURNTRANSFER, 1);
	curl_setopt($curl_handle, CURLOPT_POST, 0);
	$buffer = curl_exec($curl_handle);
	curl_close($curl_handle);
	if (empty($buffer)) {
		return null;
	} else {
		$obj=json_decode($buffer, true);
		
		// $objの中身を処理

	}	
?>