ruby - 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_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)
。
解决方案
如果我理解您的要求正确,您将编写如下方法:
def create_form
get("/form/#{form_id}/elements", headers)
end
然后你可以这样调用:
@form = SeamlessGov.new(params, headers).create_form
推荐阅读
- reactjs - 播放器组件在循环渲染时播放回声
- git - 在 Azure DevOps 上检查分支是否仅通过合并提交领先
- python - Windows Apache 停止工作并且不再启动 - “httpd.exe -k start”不给出错误
- magento2 - Magento 2选择查询显示产品sku但某些产品未显示在前端
- python - 无法在 python 中安装“Fury”
- android - 我需要更新或更改我的 gradle 文件中的任何内容吗?
- django - 如何将 Django 用于具有管理门户的 SaaS 产品?
- python - 使用字典更新索引值列
- azure - 在 Azure Web App 上运行的 PowerShell 脚本,有可能吗?
- python - 如何将api数据打印到discord bot