Laravel で簡易APIサーバーを作ってみた
風邪をひいて一日中臥せっていた。が、さすがにずっと眠れるわけもないので意味もなく blog を更新してみる試み。
Sinatraで簡易APIサーバーを作ってみた | Developers.IO の Laravel 版。
動作確認
では、実際に動かしてみよう。ターミナル(あるいはコマンド・プロンプト)で 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-Type
を application/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 は簡単なことはちゃんと簡単に書ける。僕らは難しいことに頭をひねろう。