Ruby onRailsを使用してRESTfulAPIを作成します。データを作成、削除、表示、更新したい。Androidデバイスで取得するには、すべてJSONである必要があります。また、Postmanを使用してAPIをチェックしています。これは私がしたことです:
私のコントローラー:
class Api::V1::UsersController < ApplicationController
respond_to :json
def show
respond_with User.find(params[:id])
end
def create
user=User.new(user_params)
if user.save
render json: user, status: 201
else
render json: {errors: user.errors}, status: 422
end
end
def update
user=User.find(params[:id])
if user.update(user_params)
render json: user, status:200
else
render json: {erros: user.errors},status: 422
end
end
def destroy
user=User.find(params[:id])
user.destroy
head 204
end
private
def user_params
params.require(:user).permit(:email,:password,:password_confirmation)
end
end
これは私のルートファイルです:
Rails.application.routes.draw do
devise_for :users
namespace :api, defaults:{ format: :json } do
namespace :v1 do
resources :users, :only=>[:show,:create,:update,:destroy]
end
end
end
また、Gemfileに次のコードを追加しました。
gem "devise"
gem 'active_model_serializers'
郵便配達員を介して作成したいときに、次のエラーが発生する理由がわかりません。
ActionController InvalidAuthenticityToken in Api::V1::UsersController#create
application_controller.rbに次の変更を加える必要があります
変化する
class ApplicationController < ActionController::Base
# Prevent CSRF attacks by raising an exception.
# For APIs, you may want to use :null_session instead.
protect_from_forgery with: :exception
end
に
class ApplicationController < ActionController::Base
# Prevent CSRF attacks by raising an exception.
# For APIs, you may want to use :null_session instead.
protect_from_forgery with: :null_session
end
編集
より良い方法は、特定のコントローラーの認証をスキップすることです
class Api::V1::UsersController < ApplicationController
skip_before_action :verify_authenticity_token
respond_to :json
# ...
end
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加