首页 > 解决方案 > Httparty - 附加到 url 并添加标头以通过 Ruby 类获取请求

问题描述

我目前正在Httparty制作一个GET从表单返回字段的Seamless.giv API。在请求中,需要传递身份验证标头才能访问 API。但是必须以特定的形式提出请求。这就是问题所在,这应该是在基本 URI 中还是附加的?

这是curl请求的示例:

curl -X GET -H "AuthDate: 1531236159"\
 -H "Authorization: HMAC-SHA256 api_key=XXXXXXXX nonce=12345 Signature=XXXXXXXXXXX"\
 -d 'false' https://nycopp.seamlessdocs.com/api/form/:form_id/elements

这是我目前采取的方法:

class SeamlessGov
  include HTTParty
  base_uri "https://nycopp.seamlessdocs.com/api"

  def initialize(args={})
    @api_key = args[:api_key]
    @nonce = args[:nonce]
    @signature = generate_signature
  end

  def form(form_id)
    @form = form_id 
  end

  def headers(headers={})
    @headers = headers
  end

  def generate_signature
    # bash command
  end

end

将其附加或将其放入示例中的最佳做法是base_uribase_uri "https://nycopp.seamlessdocs.com/api/form/:form_id/elements"或创建一个附加到base_uri示例的方法:

def append_form(form)
  "/form/#{form}/elements"
end

最好的方法是什么?所以当我打电话的时候 @form = SeamlessGov.new(params, headers)

标签: rubyhttpappendhttparty

解决方案


如果我理解您的要求正确,您将编写如下方法:

def create_form
  get("/form/#{form_id}/elements", headers)
end

然后你可以这样调用:

@form = SeamlessGov.new(params, headers).create_form

推荐阅读