週刊とっしーぱんち

昭和生まれのブロガーが綴る、全力脱力系雑記帳

【趣味でたのしむRuby】RubMineさんとRailsで初歩的なAPIサーバを作った話 その2 HTTPGET編

おはよーございます。

前回、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の起動画面に移動することができます。

こんなブラウザにこんな画面がでてきます。

で、URLの最後尾に作ったAPIメソッドを追記してジャンプします。

http://0.0.0.0:3000/match/

そうするとブラウザに以下のような文字が出てきます。

{"message":"Hello World"}

さきほどindexメソッドに書いたものが返ってきました。render json:とか書くだけでいい感じにJSON形式の文字列に変換してくれるんですね。というわけでHTTP GETメソッドにてAPI呼び出しをおこなってみました。

今回のまとめ

今回はここまでで一区切りです。文字数に換算すると結構なボリュームですが、実際やってみるとかなりお手軽にさっくり作れました。コードを書く時間よりも調べる時間のが長いのでこうしてまとめてみるとコード量は全然どころかほとんど書いていませんね😅逆に言えばこれがRailsの凄さなんでしょうけども。

次回はもう一個メソッドcreateの実装でHTTP POST編を書きたいと思います。では、また!