初学者API问题:400状态代码与GitHub示例API



我正在练习用Python向api发出请求。我目前在GitHub上使用这个API: https://github.com/vdespa/introduction-to-postman-course/blob/main/simple-books-api.md.

我想发出一个POST请求来订购一本书。为了实现这个请求,我提供了一个int book ID和一个str客户名。但是,我得到的响应始终是"无效或缺少图书"。

但是当我使用Postman来做同样的请求时,它会工作,响应一个True布尔值和一个str订单ID。当我使用cURL和我的终端时,它也可以工作。

任何帮助将不胜感激!谢谢你!:)

import requests
import json
order_url = "https://simple-books-api.glitch.me/orders"
my_post_1 = {"bookId" : 1, 
"customerName" : "Anna"}
header_1 = {"Authorization" : my_token}
post_text_1 = requests.post (order_url, data = my_post_1, headers = header_1)
print ("status:", post_text_1)
print ("respose:", post_text_1.text)

当一个请求在Postman和/或浏览器中工作,但在请求中不起作用时,检查报头。这通常是问题的原因。使头相同,然后尝试,或者只是尝试添加更常用的头。在这种情况下,似乎需要Content-Type标头。您应该将数据转储为json字符串或尝试Buran在评论中建议的方法。下面的方法对我有用:

import requests
import json
my_token = "8e7d3ea30584c70a71be507a2ba8250bee25126152667616d27d4a2e4d186ea3"
order_url = "https://simple-books-api.glitch.me/orders"
my_post_1 = {"bookId":1,
"customerName":"Anna"}
header_1 = {
"Authorization" : my_token,
"Content-Type": "application/json"
}
post_text_1 = requests.post (order_url, data = json.dumps(my_post_1), headers = header_1)                                                                                        
print ("status:", post_text_1)
print ("respose:", post_text_1.text)

最新更新