2017-01-12 17 views
5

私はRuby on Railsを使って安らかなAPIを作成します。私は、データを作成、削除、表示、更新したいと思っています。それらのすべては、Androidデバイスで取得するにはJSONでなければなりません。また、Postmanを使用してAPIをチェックしています。 これは私がやったことです:ActionController APIのInvalidAuthenticityToken :: V1 :: UsersController#create

マイコントローラー:

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 

答えて

4

あなたが

変更

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 

EDITにapplication_controller.rbで以下の変更を加える必要があり

より良い方法は特定のコントローラの認証をスキップすることです

class Api::V1::UsersController < ApplicationController 
    skip_before_action :verify_authenticity_token 

    respond_to :json 
    # ... 
end 
+0

質問の著者はまだエラーを述べていません。私はあなたがどのように問題を解決するかを知ることができたのか不思議です。 –

+0

質問にエラーがあります –

+0

私はそれを完全に逃しました。ありがとう。 –

関連する問題