今日はRESTについて調べた.直訳すると「表現状態移動」.画面間をXMLやJSONやCSVなど特定のデータ形式でデータを受け渡して移動できる.現在の開発では,データの受け渡しといえばGETとPOSTとセッションしか知らないので,Input::post(‘name’)を繁用しているが,RESTfulな実装を行えば,Input::json(‘name’)でデータが取れてしまう.
たとえばJSONでデータを受け渡すことを考えてみる.jQueryのAJAXを使う方法をとってみる.
var data = {
name: “FuelPHPデータ”
};
$.ajax({
type : ‘post’,
url : ‘/json/post.json’,
data: JSON.stringify(data),
contentType: ‘application/json’,
dataType: ‘json’,
})
.done(function(json_data) {
return;
})
.fail(function() {
alert(‘Server Error. Please try again later.’);
})
.always(function() {
})
});
すると,次のデータが返ってくる.
{“name”:”FuelPHPデータ”}
あとは Input::json(‘name’) と書けば, FuelPHPデータ が取れてしまう.ここでRESTコントローラを使う.
class Controller_Api extends Controller_Rest
{
public function get_list()
{
return $this->response(array(
’name’ => Input::get(‘name’),
’baz’ => array(1, apple, pen),
’empty’ => null
));
}
}
http://localhost/api/list.json?name=FuelPHP にアクセスすると,次が返ってくる.
{
”name”:”FuelPHP”,
”baz”:[1,apple,pen],
”empty”:null
}
肝心なのは使いみちであるが,
class Controller_RestForm extends Controller_Rest
{
public function get_list()
{
return $this->response(array(
’name’ => Input::get(‘name’),
’user’ => Input::get(‘user’),
’pass’ => Input::get(‘pass’),
’nick’ => Input::get(‘nick’),
));
}
}
とすれば
http://localhost/api/list.json
. ?name=FuelPHP&user=david
. &pass=sixstar$nick=deve
{
”name”:”FuelPHP”,
”user”:”david”,
”pass”:”sixstar”,
”nick”:”deve”,
}
などとなれるのだから,URIが決まっている時はデータの受け渡しに使えそう.また,CSV出力したい時にも使える.これは便利な技術だということで覚えておいて損はないだろう.
