4

Rails アプリケーション用の JSON API を作成しようとしていて、次のメソッドを作成しました。

  def create
    organization = Organization.find(params[:organization][:node_id])
    node = organization.nodes.build(nodes_params.except[:id])
    if node.save
      render json: node, status: :ok
    else
      render json: node, status: :bad_request
    end
  end

Postman でメソッドを試すと、「CSRF トークンの信頼性を確認できません」というエラーが返されます。この投稿に基づいて、以下のコードをベースコントローラーに追加しました。残念ながら、これは違いはありませんでした。誰かがエラーの原因を理解していますか?

protect_from_forgery
skip_before_action :verify_authenticity_token, if: :json_request?
private
  def json_request?
    request.format.json?
  end
4

1 に答える 1

5

のコメントに従って、application_controller.rbこの行を配置する必要があります protect_from_forgery with: :null_session

から継承されたすべての API のコントローラーに対してのみ、もう 1 つのルート コントローラーを作成するとよいでしょうApplicationController。すなわち

class Api::ApiController < ApplicationController
  #TODO
  protect_from_forgery with: :null_session
end

その他の API のコントローラー

class Api::V1::AddressesController < Api::ApiController
  #TODO
end

このコントローラ クラスは、アプリケーション全体ではなく、API のルートのみを変更するのに役立ちます。このコントローラーを使用して、API のさまざまなバージョン間で DRY アクションを作成することもできます。

于 2016-01-18T10:14:28.047 に答える