我显然错过了一些基本的东西。请原谅我,但在此之前我做了 6 个小时的强制性谷歌搜索。
我需要将大量参数传递给获取请求,以进行身份验证和检索特定信息。我不想通过路径执行此操作,甚至不希望查询是否可以提供帮助。
Grape 自动通过查询或路径传递 params 变量。当我present params
不需要:id
. 在我继续之前,我正在使用的两个短文件:
module API
module V1
module Defaults
extend ActiveSupport::Concern
included do
prefix "api"
version "v1", using: :path
default_format :json
format :json
end
end
end
end
然后正确安装的“人”文件:
module V1
class People < Grape::API
include API::V1::Defaults
resource :people do
desc "Return all users"
get "" do
Person.all
end
desc "Return a user"
params do
requires :id, type: String, desc: "ID of the user"
end
get ":id" do
Person.where(id: params[:id]).first!
end
end
end
end
end
这非常直截了当,对吧?我从空白获取条件中得到有效响应。我什至可以通过present params
并获得我的查询或路径变量(在本例中为 id)的漂亮 JSON。
然而,我完全无法让 request.body JSON 出现在任何地方。令人惊讶的是,我也无法通过get ":id" do
查询触发条件,而只能通过路径触发。这些都不是非常可扩展的,所以我希望它可以与请求的 JSON 正文一起使用。
与 POST 相比,对于 GET 请求来说这是否特别困难?如何使用 Grape 中 req.body 中的参数进行 GET 请求?
这是我使用 SO 十年后的第一篇文章,因此请酌情辱骂我。这么简单的一个问题,已经让我确信我已经遭受了不可逆转的脑损伤。