postman 无法使用Python脚本发送提交请求

a64a0gku  于 2023-01-05  发布在  Postman
关注(0)|答案(2)|浏览(214)

我用FastAPI构建了我的第一个API,在完成开发后,我用Ubuntu服务器部署了我的应用程序,我还设置了NGINX和SSL。
现在我需要用已经可用的信息填充数据库,我认为批量填充的最佳方法是通过python脚本(我将有1000多条记录要发布)。在制作过程中,我已经设置好了我的脚本,它工作得很完美,但现在我不能让它在开发中工作。我尝试了一百种不同的方法,但是POST请求被重定向到GET请求,并且响应是一个200OK消息而不是一个201created消息。更令人困惑的是,POST请求在通过Postman完成时是有效的,然后当我使用Postman在Python中获取代码片段时,它不起作用。

这是我的应用程序:https://github.com/andreasmalta1/football_data_api.git这是应用程序的托管位置:https://thefootballdata.com/api/teams/
这是我发送POST请求的脚本:

import requests
import json

login_url = "https://thefootballdata.com/api/login"
post_url = "https://thefootballdata.com/api/teams"

login_response = requests.post(login_url, data=login_payload)
access_token = login_response.json()["access_token"]

payload = json.dumps({
  "full_name": "Andreas Calleja",
  "name": "Andreas"
})

headers = {
  'Authorization': f"Bearer {access_token}",
  'Content-Type': 'application/json'
}

response = requests.request("POST", url=post_url, headers=headers, data=payload)

print(response.text)
qvtsj1bj

qvtsj1bj1#

正如Chris所指出的,由于我的API允许在同一端点(api/teams)同时发出GETPOST请求,因此解决方案是在请求URL处放置一个尾随的/。在我的整个测试过程中,Postman和开发期间都不需要这样做,而只有在生产脚本编写期间才需要。

oogrdqng

oogrdqng2#

你可以这样发布你的数据:

import requests
import json

login_url = "https://thefootballdata.com/api/login"
post_url = "https://thefootballdata.com/api/teams"

login_response = requests.post(login_url, data=login_payload)
access_token = login_response.json()["access_token"]

# post data 
post_payload = {
     "full_name": "Andreas Calleja",
     "name": "Andreas"
}

post_headers = { "Authorization": "Bearer " + access_token }

post_response = requests.post(post_url, data=post_payload, headers=post_headers)
print(post_response.json())

相关问题