一尘不染

POST json到Rails服务器

json

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状态响应。

有什么建议?


阅读 209

收藏
2020-07-27

共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
2020-07-27