Fumiya-Matsumoto / run_manage_spa

0 stars 0 forks source link

API設計【Userモデル】 #7

Open Fumiya-Matsumoto opened 2 years ago

Fumiya-Matsumoto commented 2 years ago

概要

UserモデルのAPIを設計する

目的達成のために

参考

Fumiya-Matsumoto commented 2 years ago

Userに関するAPIエンドポイントを修正する

現状①

問題

新規登録はdeviseを使っているため、余計なエンドポイントができてしまっている。 メソッド名 エンドポイント アクション
GET /v1/users(.:format) v1/users#index
POST /v1/users(.:format) v1/users#create
GET /v1/users/:id(.:format) v1/users#show
PATCH /v1/users/:id(.:format) v1/users#update
PUT /v1/users/:id(.:format) v1/users#update
DELETE /v1/users/:id(.:format) v1/users#destroy

解決案

Fumiya-Matsumoto commented 2 years ago

devise_token_authで新規ユーザー登録、ユーザー情報編集においてparametersを追加する方法

1. registrations_controllerに追記する

app/controllers/v1/auth/registrations_controller.rbを作る。 これによって、registrations_controllerをオーバーライドする。

class V1::Auth::RegistrationsController < DeviseTokenAuth::RegistrationsController
    private
    #ユーザー登録時に使用
    def sign_up_params
        params.permit(:name, :email, :password, :password_confirmation)
    end
    #ユーザー更新時に使用
    def account_update_params
        params.permit(:name, :email)
    end
end

2. routes.rbを更新する

ルーティングを更新する。

Rails.application.routes.draw do
  namespace :v1 do
    resources :posts
    mount_devise_token_auth_for 'User', at: 'auth', controllers: {
      registrations: 'v1/auth/registrations'
    }
  end
end

参考

Fumiya-Matsumoto commented 2 years ago

いらないエンドポイントを削除

routes.rbを編集して、indexアクション、showアクションに絞った。 ログイン中でなければアクセスできないように後ほど編集する。