我正在学习Python,目前我正在尝试请求模块。
我做了什么:
这是我使用的端点的API文档:
https://trackapi.nutritionix.com/docs/#/default/post_v2_natural_exercise
这是相关的Python代码:
EXERCISES_ENDPOINT = "https://trackapi.nutritionix.com/v2/natural/exercise"
header = {
"x-app-id": APP_ID,
"x-app-key": API_KEY
}
body = {
"query": "Ran 2 miles and walked for 3Km."
}
response = requests.post(url=EXERCISES_ENDPOINT, headers=header, json=body)
对应的http请求URL应为:
https://trackapi.nutritionix.com/v2/natural/exercise?Ran%202%20miles%20and%20walked%20%20for%203Km.
我的问题如下:
- 在Python中,代码列表工作得很好,我的响应如预期的
- 如果我使用邮差,这也工作得很好,因为在- python和邮差-我可以指定我的请求作为POST方法
- 但是如果我在我的MS Edge浏览器(和Chrome)使用URL,我得到一个错误:不能get/v2/natural/exercise
报头信息是可以的,因为我告诉浏览器他们使用"ModHeader"扩展。
但是为什么我的浏览器做GET而不是POST,我怎么能用MS Edge浏览器的开发工具来改变这一点呢?
重要的是要知道为什么浏览器做一个GET??一般来说,浏览器是否只能执行GET,而其他方法(POST、PUT、DELETE)则不能这样执行。但这对我来说没有意义:)
Thanks much in advance
但是为什么我的浏览器做GET而不是POST
可能是因为您正在尝试将地址输入浏览器的地址栏。
它被设计为发出GET请求,因为UI中没有任何设计来收集发出另一种请求类型所需的任何数据。
发出POST请求的通常方式是以HTML<form>
的形式为它提供一个用户界面。