Reactjs 获取请求不接受正文,但接受requests.get

Reactjs 获取请求不接受正文,但接受requests.get,reactjs,python-requests,fetch,Reactjs,Python Requests,Fetch,我有一个requestsGETapi,它接受一个body,以便根据body中的内容进行过滤。如下所示,逻辑是使用获取特定集群的任务Django已用于后端。我正在将其与React集成 import requests url = "http://localhost:8000/v1/tasks" payload={'cluster': <cluster_id>} headers = { 'Authorization': 'Token <user_token

我有一个requests
GET
api,它接受一个
body
,以便根据body中的内容进行过滤。如下所示,逻辑是使用
获取特定集群的任务
Django
已用于后端。我正在将其与
React
集成

import requests

url = "http://localhost:8000/v1/tasks"

payload={'cluster': <cluster_id>}
headers = {
  'Authorization': 'Token <user_token>'
}

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

print(response.text)

我遇到一个错误,该错误限制在GET请求中使用body。在不修改RESTAPI结构的情况下,如何在fetch中应用逻辑?甚至可以在fetch-GET请求中使用body并检索数据吗?

GET不支持请求中的body。即使你通过了,它也会被忽略

您可以使用
URLSearchParams
将参数转换为要随url一起发送的查询参数

新建URLSearchParams(params).toString()


将其作为查询参数传递有什么问题?
/tasks/
不是查询参数。查询参数将如下所示
/tasks?cluster=42
,这就是在您的情况下,后端如何期望数据的方式哦,是的,我的意思是这样的。后端的逻辑与此不兼容。后端使用
django
,因此逻辑使用
requests.data.get('cluster')
而不是
request.query\u params['cluster]
来处理get以外的其他请求类型,肯定会处理query\u params。获取
群集id
。我想,如果没有其他选择,这将不得不是一个后端修改。你尝试过这个吗?
async componentDidMount() {
    const options = {
      method: 'GET',
      headers: {
        'Accept': 'application/json',
        'Content-Type': 'application/json;charset=UTF-8',
        'Authorization': 'Token ' + localStorage.getItem('token')
      },
      body: JSON.stringify({
        cluster: this.state.cluster_id
    })
    }
    const response = await fetch(`http://localhost:8000/v1/tasks`, options)
    const json = await response.json()
    return json
  }
const params = { cluster: this.state.cluster_id };
const options = {
  method: 'GET',
  headers: {
    'Accept': 'application/json',
    'Content-Type': 'application/json;charset=UTF-8',
    'Authorization': 'Token ' + localStorage.getItem('token')
  }
};
const url = `http://localhost:8000/v1/tasks?${new URLSearchParams(params)}`
const response = await fetch(url, options)