Httparty-附加到URL并添加标头以通过Ruby类获取请求

时间:2018-07-10 17:40:16

标签: ruby http append httparty

我目前正在与Httparty合作制作一个GET Seamless.giv API,该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_uri中: base_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)有效。

1 个答案:

答案 0 :(得分:1)

如果我正确理解了您的要求,则可以编写以下方法:

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

然后您可以拨打以下电话:

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