RailsサーバーにJSONをPOSTする 質問する

RailsサーバーにJSONをPOSTする 質問する
def create
  req = ActiveSupport::JSON.decode(request.body)
  if user = User.authenticate(req["email"], req["password"])
    session[:user_id] = user.id
    render :json => "{\"r\": \"t\"}" + req
  else
    render :json => "{\"r\": \"f\"}"
  end
end

'create' メソッドはコントローラー内にあり、"/login" にマップされています。正しいコンテンツ タイプを設定し、curl クライアントからヘッダーを受け入れています。常に 422 http ステータス応答が返されます。

助言がありますか?

ベストアンサー1

正しいヘッダーを送信する場合は、「ActiveSupport::JSON.decode」を実行する必要はありません。Rails が自動的に実行します。

投稿に次のヘッダーを設定する必要があります。

Content-Type: application/json
Accept: application/json

422 は処理できないエンティティを意味します。通常は検証に失敗したことを意味します。

できるはずです。できない場合は、ヘッダーが正しく設定されていません。

def create
  if user = User.authenticate(params["email"], params["password"])
    session[:user_id] = user.id
    render :json => "{\"r\": \"t\"}" + req
  else
    render :json => "{\"r\": \"f\"}"
  end
end

おすすめ記事