はじめに
API通信って最初何やってるのかよくわかりませんでした。
今回は、同じ悩みを持つ人が少しでもイメージが持てるように、
UIはつくらずに、実行後のレスポンス結果をJSONで返す実装を紹介します。
題材はRails初学者が恐らく最初に学んだであろうサインアップ、ログイン。
コード
※ userテーブルのカラムはemail,password
※ アクセスURLはhttp://localhost:3000/api/v1/***とします。localhost:3000のままでもok
routes.rb
Rails.application.routes.drawdo# namespaceで /api/v1/の階層をつくるnamespace:api,format: :jsondonamespace:v1dopost:sign_up,to: 'users#sign_up'post:login,to: 'users#login'endendend
users_controller.rb
classApi::V1::UsersController<ApplicationController## クラス名を階層に合わせるdefsign_upuser=User.new(user_params)ifuser.saverenderstatus: "200",json: {result: user}# 保存成功時にユーザー情報をjson形式で返すelserenderstatus: "400",json: {result: "メールアドレスまたはパスワードが有効ではありません"}endenddefloginuser=User.find_by(email: params[:email])ifuser&&user.authenticate(params[:password])renderstatus: "200",json: {result: user}# ログイン成功時にユーザー情報をjson形式で返すelserenderstatus: "400",json: {result: "メールアドレスまたはパスワードが一致しません"}endendprivatedefuser_paramsparams.permit(:email,:password)endend
Postmanで試してみる
使ったことない人のために
インストール(https://www.postman.com/)したら画像の通りやってみてください。
設定できたら「Send」ボタンで実行!
サインアップ成功例
ログイン成功例
ログイン失敗例
レスポンス内容を全部表示したくないとき
as_jsonを使うと簡単に制限できます。
参考URL https://qiita.com/tbaba/items/ea44025b056f708ab0b4
おわりに
知ってしまえば意外と簡単でした。でも初学者はこれを知るのに時間がかかるんです。。。
誰かの助けになれば幸いです。