おはよーございます。
前回、Amazonさんからの突然の通告により狼狽してしまいました。
気を取り直してAPIサーバのつづき、その2です。
その1では、プロジェクト作成とコントローラの追加まで行ったので、今回は実際にメソッドを実装して、動作チェックです。
コントローラにメソッドを追加する。GET編
作ったコントローラにメソッドを追加していきます。routes.rbに自動でAPIルーティングが付与される記述をしたので以下のようなAPIを呼び出すことができるのですが、今回はindexとcreateだけ作ってみることにしました。
GET /match match#index GET /match/new match#new POST /match match#create GET /match/:id match#show GET /match/:id/edit match#edit PATCH/PUT /match/:id match#update DELETE /match/:id match#destroy
やりかたは、作ったコントローラのクラスに以下のようにメソッドを定義するだけでした。
class MatchController < ApplicationController # /matchで呼び出せる def index end # /matchで呼び出せる def create end end
どっちも/matchで呼び出せるとは何事か?
すこし話それるんですが、indexはHTTP GETで、createはHTTP POSTで呼び出すことができます。ってなんだそりゃという話ですが、HTTP GETの方は、ブラウザでURL叩くとそのまま呼び出せます。対してHTTP POSTは、URL叩いただけでは呼び出すことはできません。一般的なWEBサイトだと入力フォームになんか書いて、送信とか登録ボタンを押した時に画面が切り替わりがちですがそういうときにHTTP POST呼び出しが行われていたりいなかったりします。きっとそう。
細かい話はさておき、APIサーバを作るというのが目的なので、それっぽくJSONというデータ形式で返すように処理を追加します。とりあえずindexメソッドにだけ追記します。
class MatchController < ApplicationController # /matchで呼び出せる def index render json: { message: 'Hello World' } end end
なんかこれだけでJSONデータに変換してくれるみたいです。簡単か。というわけで起動して確認してみたいと思います。
起動してブラウザから動作をチェックする。
RubyMineさんでRailsを起動するときは、緑色のボタン押すだけでした。ちなみに虫のアイコン押すとエラーが出て動きませんでした。。なぜだ。
起動すると下の画面に以下のような記述が出るのでhttpのところのリンクをクリックするブラウザが起動してRailsの起動画面に移動することができます。
- Listening on http://0.0.0.0:3000
こんなブラウザにこんな画面がでてきます。
で、URLの最後尾に作ったAPIメソッドを追記してジャンプします。
そうするとブラウザに以下のような文字が出てきます。
{"message":"Hello World"}
さきほどindexメソッドに書いたものが返ってきました。render json:とか書くだけでいい感じにJSON形式の文字列に変換してくれるんですね。というわけでHTTP GETメソッドにてAPI呼び出しをおこなってみました。
今回のまとめ
今回はここまでで一区切りです。文字数に換算すると結構なボリュームですが、実際やってみるとかなりお手軽にさっくり作れました。コードを書く時間よりも調べる時間のが長いのでこうしてまとめてみるとコード量は全然どころかほとんど書いていませんね😅逆に言えばこれがRailsの凄さなんでしょうけども。
次回はもう一個メソッドcreateの実装でHTTP POST編を書きたいと思います。では、また!