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