0

我显然错过了一些基本的东西。请原谅我,但在此之前我做了 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 十年后的第一篇文章,因此请酌情辱骂我。这么简单的一个问题,已经让我确信我已经遭受了不可逆转的脑损伤。

4

0 回答 0