PHP と jQuery で RESTful なインターフェイスを作る

スポンサーリンク

かなり前に下書きしたまま放置していた記事を見つけた。あまり検証していないが公開しておく。


RESTful なアプリケーションを作るために、jQuery で PUT メソッドと DELETE メソッドのリクエストをサーバに送り、PHP でそれを受け取る方法についてメモしておく。

まず、クライアントからサーバに PUT、DELETE で Ajax リクエストを送るための jQuery メソッド、$.put() と $.delete() を定義する。

jQuery.each( [ "put", "delete" ], function( i, method ) {
	jQuery[ method ] = function( url, data, callback, type ) {
		if ( jQuery.isFunction( data ) ) {
			type = type || callback;
			callback = data;
			data = undefined;
		}

		return jQuery.ajax({
			type: method,
			url: url,
			data: data,
			success: callback,
			dataType: type
		});
	};
});

POST で Ajax リクエストを送る既存のメソッド $.post() は、次のように使う。

$.post(
	"***.php", 
	JSON.stringify({
		foo: "bar", 
		hoge: "fuga"
	}), 
	function(data, text_status) {
		:
		:
	}
);

これにより、2つめの引数に指定した JSON オブジェクトが文字列化されて、サーバに送られる。

先ほど定義した $.put() と $.delete() も、$.post() と同様に使える。

$.put(
	"***.php", 
	JSON.stringify({
		foo: "bar", 
		hoge: "fuga"
	}), 
	function(data, text_status) {
		:
		:
	}
);
$.delete(
	"***.php", 
	JSON.stringify({
		foo: "bar", 
		hoge: "fuga"
	}), 
	function(data, text_status) {
		:
		:
	}
);

これでクライアントからサーバに、PUT、DELETE でもリクエストを送れるようになった。ただし、GET と POST 以外のメソッドは、全てのブラウザで対応しているわけではない。また、GET リクエストを送るには $.getJSON() を使えば良い。

次に、送られてきたリクエストを、以下の PHP コードで受け取る。

if ($_SERVER['REQUEST_METHOD'] == 'GET') {
	$req = array();
	parse_str($_SERVER['QUERY_STRING'], $req);
} else {
	$req = json_decode(file_get_contents('php://input'));
	$req = get_object_vars($req);
}

これにより、クライアントから送られてきたリクエストが、配列 $req に格納される。

スポンサーリンク

参考ページ

コメント

タイトルとURLをコピーしました