reactjs - 获取请求不接受正文,但 requests.get 接受
问题描述
我有一个GET
接受 a 的请求 api,body
以便根据正文中的内容进行过滤。如下所示,逻辑是使用<cluster_id>
. 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)
我正在尝试在前端使用 fetch 进行相同的操作,尽管我清楚地知道不建议在 GET 请求中使用正文。
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
}
我收到一个错误,限制在 GET 请求中使用正文。如何在不修改其余 api 结构的情况下应用 fetch 中的逻辑?是否有可能在 fetch GET 请求中使用主体并检索数据?
解决方案
GET 不支持请求中的正文。即使你通过了,它也会被忽略。
您可以使用URLSearchParams
将参数转换为要与 url 一起发送的查询参数。
new URLSearchParams(params).toString()
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)
推荐阅读
- amazon-web-services - AWS AppSync - 获取不带 SortKey 的 BatchItem
- ios - 徽章未显示在应用程序图标 iOS 上
- linux - 使用反引号在 perl 脚本中获取核心文件
- swift - Firebase createdAt - 时间戳与日期
- api - 远离相机检测的 Tenorflow 小物体
- typescript - 续集计数返回值不可分配给类型“数字”
- angular - AngularJs 无法读取未定义的属性“订阅”
- google-cloud-build - CloudBuild 作业未并行执行
- javascript - 关于偶数和奇数问题(使用递归)
- html - 即使我已经在 css 中设置了背景颜色、大小等,我的按钮也没有格式化