将 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 请求接口的主要内容,如果未能解决你的问题,请参考以下文章

将 cURL 命令转换为 http put 请求

将 cURL 命令转换为 python 请求

在 Swift 中将 cUrl 命令转换为 HTTP 请求

将 Paypal cURL 命令转换为 Axios 请求

将 paypal curl 获取访问令牌请求转换为 guzzle

如何将此 curl 命令转换为 Ruby rest-client put 请求?