如何为 Python 中的 POST 请求传递一个查询参数?

How can I pass a dict a query param for a POST request in Python?

我正在尝试使用字典参数发出 POST 请求。

是否可以或我必须将其转换为其他形式?

import requests

def do_random_request(self, random_dictionary: dict, random_number: int, random_name: str):
  url = "https://api.random-site.com/"
  params = {
    "randomObject": random_dictionary,
    "randomNumber": random_number,
    "randomName": random_name,
  }

  try:
    response = requests.post(url, params)
    data = response.json()
  except Exception as e:
    print(e)
  else:
   return data

现在我从 API 端点收到以下错误:

{'error': '"randomObject" must be of type object'}

如果在 json 中发送请求会更好。

这应该有效

import json
import requests
 
def do_random_request(self, random_dictionary: dict, random_number: int, random_name: str):
  random_dictionary_json = json.dumps(dict, indent = 4)
  url = "https://api.random-site.com/"
  params = {
    "randomObject": random_dictionary_json,
    "randomNumber": random_number,
    "randomName": random_name,
  }

  try:
    response = requests.post(url, params)
    data = response.json()
  except Exception as e:
    print(e)
  else:
   return data

希望这有用,如果不行请评论

我终于意识到我需要将它作为 json 而不是参数传递:

def do_random_request(self, random_dictionary: dict, random_number: int, random_name: str):
  url = "https://api.random-site.com/"
  json = {
    "randomObject": random_dictionary,
    "randomNumber": random_number,
    "randomName": random_name,
  }