Reactjs 获取请求不接受正文,但接受requests.get
我有一个requestsReactjs 获取请求不接受正文,但接受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
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)