6

ヘッダー 'Content-type: application/json' が送信されると、Rails はいくつかのレベルで動作を変更します。

  • 送信された投稿の本文は、単なる文字列パラメーターではなく、json として解析されます
  • config/initializers/wrap_parameters.rb の wrap_parameters :format => [:json] は、投稿された言及されたパラメーターを解析するときに使用されます (したがって、ルート要素の有無にかかわらず json を送信できます)

(外部) クライアントが正しいヘッダーを渡すことを信頼できない場合はどうすればよいですか? つまり、クライアントが実際に渡さなくても、クライアントが常に'Content-type: application/json' ヘッダーを渡すかのようにアプリケーションを動作させたいですか?

4

1 に答える 1

1

を使用してアクション内でタイプを設定できます

request.format = :json

を使用してテストしました

class ExampleController < ApplicationController

  def always_accept_json
    request.format = :json
    respond_to do |format|
      format.json { raise "HEY" }
      format.html 
    end
  end
end

Any ActionController 内のどこでも実行できます。つまり、トップレベルですべてのリクエストを content_type としてアプリケーションに表示したい場合は、そのセットapplication/jsonのフィルターにするだけですapplication_controller.rbrequest.format

于 2013-07-11T18:11:30.443 に答える