将 curl 命令转换为 http 请求接口
Posted
技术标签:
【中文标题】将 curl 命令转换为 http 请求接口【英文标题】:Converting curl commands to http request interface 【发布时间】:2017-08-22 05:45:02 【问题描述】:如何将 Lyft api 中的以下 curl 命令转换为 http 接口请求(以便它们可以像 https://maps.googleapis.com/maps/api/geocode/json?address=1600+Amphitheatre+Parkway,+Mountain+View,+CA&key=YOUR_API_KEY 一样通过网络执行)?如果无法进行 http 请求翻译,我将如何在 R 中集成和处理这些 curl 命令?
#Authentication code
curl -X POST -H "Content-Type: application/json" \
--user "<client_id>:<client_secret>" \
-d '"grant_type": "client_credentials", "scope": "public"' \
'https://api.lyft.com/oauth/token'
#Search query
curl --include -X GET -H 'Authorization: Bearer <access_token>' \
'https://api.lyft.com/v1/eta?lat=37.7833&lng=-122.4167'
【问题讨论】:
【参考方案1】:您好,您可以使用 https://curl.trillworks.com/ 将 curl 命令转换为您选择的语言,或者您可以使用 lyft SDK(对于 Python,使用 https://pypi.python.org/pypi/lyft_rides)。
这里是对应的Python版本
import requests
headers =
'Content-Type': 'application/json',
data = '"grant_type": "client_credentials", "scope": "public"'
requests.post('https://api.lyft.com/oauth/token', headers=headers, data=data, auth=('<client_id>', '<client_secret>'))
从此发布请求中,您将获得必须用于后续请求的访问令牌。
headers =
'Authorization': 'Bearer <access_token>',
requests.get('https://api.lyft.com/v1/eta?lat=37.7833&lng=-122.4167', headers=headers)
注意:我没有对此进行测试,因为我无法创建 lyft 开发者帐户,因此此处给出的代码可能会有一些细微的变化。
【讨论】:
感谢您的回答!但是,我的应用程序在 R 中,因此我正在寻找更通用的 https 实现,以便编程语言不会成为障碍。 这是高级别的语言独立。您需要发送一个 http POST 请求以获取承载令牌,然后使用该令牌发送一个 GET 请求。您可以为此 cran.r-project.org/web/packages/httr/vignettes/quickstart.html 使用 httr 包【参考方案2】:[全面披露:我是 Lyft 的开发者倡导者] 我对 R 不是很熟悉,但您能否使用本博文中描述的方法集成响应/调用?
https://www.r-bloggers.com/accessing-apis-from-r-and-a-little-r-programming/
【讨论】:
感谢您的文章!通过这个和一些冲浪,我找到了cran.r-project.org/web/packages/jsonlite/vignettes/…。 Lyft api 的格式与 Twitter 的相似,因此上面的内容绝对有助于启发解决方案。【参考方案3】:ReqBin 可以自动将 Curl 命令转换为 HTTP 请求
此类请求的示例: Convert Curl to HTTP Request
【讨论】:
以上是关于将 curl 命令转换为 http 请求接口的主要内容,如果未能解决你的问题,请参考以下文章