localdisk

PHP とか Java とか Web とか好きなことを書きます。

Laravel で簡易APIサーバーを作ってみた

風邪をひいて一日中臥せっていた。が、さすがにずっと眠れるわけもないので意味もなく blog を更新してみる試み。

Sinatraで簡易APIサーバーを作ってみた | Developers.IO の Laravel 版。

Laravel について

Laravelは表現力に富むエレガントな記述が使用できるWebアプリケーションのフレームワークです。

Laravel-イントロダクション

多分トレーズ閣下くらいエレガント。

ソース

Gist を作ってある。

説明は割愛。見ればなんとなくわかると思う。元エントリである Sinatra と比べてみてほしい。

動作確認

では、実際に動かしてみよう。ターミナル(あるいはコマンド・プロンプト)で Laravel のプロジェクトにカレントディレクトリを移動させて以下のコマンドを実行する。

$ php artisan serve

こうするだけで PHP の Built-in web server が起動する。あとはブラウザから http://localhost:8000/show にアクセスしてみよう。

{"id":1,"title":"today's dialy","content":"It's a sunny day."}

こんな感じで出力されていると思う。余談だが、return Response::json($article); の部分を return json_encode($article); しても同じ結果に見えるが Response::json を使用すると Content-Typeapplication/json にしてくれる。json_encode 使うと text/html になるので実際おすすめできない。

次は POST リクエスト。元エントリと同じく curl を使用してリクエストを投げる。まずは body を未指定で POST する。

curl -X POST -I http://localhost:8000/edit

結果はこんな感じ

HTTP/1.0 400 Bad Request
(以下略)

return App::abort(400); がちゃんと機能しているのがわかる。

次は body を指定して POST する。

curl -v -H "Accept: application/json" -H "Content-type: application/json" -X POST -d '{"title":"MyFavorite","content":"Color is Black."}' http://localhost:8000/edit -w "\n%{http_code}\n"

結果は

略
{"title":"MyFavorite","content":"Color is Black."}
200

リクエストされたものがそのまま返却された。

言いたいこと

Laravel は簡単なことはちゃんと簡単に書ける。僕らは難しいことに頭をひねろう。