我尝试使用GET方法发送正文中的数据。当我尝试使用POSTMAN/cURL/Python运行时,它运行得很好,但使用AXIOS(ReactJS)就不行了。
网址:
curl -X GET \
http://127.0.0.1:8000/xyz/xyz/ayx-api/ \
-H 'Authorization: Token 980e4e673a9cfb4c99cb35313f65a446aa44faf7' \
-H 'Content-Type: application/json' \
-H 'Postman-Token: 1ee27393-b4b0-446a-b613-bd319e02e3c8' \
-H 'cache-control: no-cache' \
-d '{"dataId": 1, "date": "2018-03-01", "days": 9 }'
这个卷发器很好用
使用Axios:
import axios from 'axios';
const baseUrl = process.env.BACKEND_SERVER_URL;
export const fetchDataObjects = async() => {
const header = {
'Content-Type': 'application/json',
'Authorization': `Token ${localStorage.token}`,
}
const data ={"dataId": 1, "date": "2018-03-01", "days": 9 }
const res= await axios.get(`${baseUrl}/ayx-api/`,{data:JSON.stringify(data)}, {headers: header})
// above line need to helop
return res.data;
}
如何在get方法中使用axios发送body中的数据?
先谢谢你。
2条答案
按热度按时间dgiusagp1#
The HTTP
GET
method requests shouldn't have a request body,和axios
不能创建带主体的GET请求,也不能为你创建查询字符串,如果你想传递查询字符串,你必须手动完成,或者用类似qs
:hfsqlsce2#
你可以创建一个带主体的
GET
请求,你需要把主体传递给AxiosRequestConfig(axios.get
方法的第二个参数)。AxiosRequestConfig也接受标头(如果需要)。
虽然文档中说
data
是仅适用于请求方法'PUT'、'POST'、'DELETE'和'PATCH'
您可以实际传递主体(在axios 0.27中测试),服务器应该¹接收它。您还需要确保服务器将接受这样的请求since the constrain in the specification was removed almost a decade ago。
¹ -引用自MDN's GET page:
注意:在GET请求中发送主体/有效负载可能会导致一些现有的实现拒绝请求-虽然规范没有禁止,但语义是未定义的。最好避免在GET请求中发送有效负载。
我正在使用axios进行NestJS e2 e测试,带有ExpressJS的NestJS 9.1将接受
GET
请求中的主体(是的,您可以使用@Body()
装饰器检索它)。