Javascript Axios删除带有正文和标题的请求?
我在用ReactJS编程时使用Axios,我假装向我的服务器发送删除请求 为此,我需要标题:Javascript Axios删除带有正文和标题的请求?,javascript,reactjs,http,axios,http-delete,Javascript,Reactjs,Http,Axios,Http Delete,我在用ReactJS编程时使用Axios,我假装向我的服务器发送删除请求 为此,我需要标题: headers: { 'Authorization': ... } 而身体是由 var payload = { "username": .. } 我一直在inter-webs中搜索,只发现DELETE方法需要一个“param”,不接受任何“data” 我一直在尝试这样发送: axios.delete(URL, payload, header); 甚至 axios.delete(URL,
headers: {
'Authorization': ...
}
而身体是由
var payload = {
"username": ..
}
我一直在inter-webs中搜索,只发现DELETE方法需要一个“param”,不接受任何“data”
我一直在尝试这样发送:
axios.delete(URL, payload, header);
甚至
axios.delete(URL, {params: payload}, header);
但似乎什么都不管用
有人能告诉我是否有可能(我想是这样)发送一个包含标题和正文的删除请求,以及如何做到这一点吗
提前谢谢你
axios.delete
不支持请求主体。它接受两个参数:url
和可选配置。您可以使用config.data
设置请求正文和标题,如下所示:
axios.delete(url, { data: { foo: "bar" }, headers: { "Authorization": "***" } });
请参见此处-axios。删除是必要的
delete(url[,config])
田野
这使得API调用可以编写为:
const headers = {
'Authorization': 'Bearer paperboy'
}
const data = {
foo: 'bar'
}
axios.delete('https://foo.svc/resource', {headers, data})
要通过
axios
发送带有某些标题的HTTP DELETE,我已经完成了以下操作:
const deleteUrl = "http//foo.bar.baz";
const httpReqHeaders = {
'Authorization': token,
'Content-Type': 'application/json'
};
// check the structure here: https://github.com/axios/axios#request-config
const axiosConfigObject = {headers: httpReqHeaders};
axios.delete(deleteUrl, axiosConfigObject);
不同HTTP谓词(GET、POST、PUT、DELETE)的axios
语法很复杂,因为有时第二个参数应该是HTTP正文,有时(可能不需要时)您只需将头作为第二个参数传递
但是,假设您需要发送一个没有HTTP正文的HTTP POST请求,然后需要将undefined
作为第二个参数传递
请记住,根据配置对象()的定义,在调用axios.delete
时,您仍然可以通过data
字段在HTTP调用中传递HTTP正文,但是对于HTTP删除谓词,它将被忽略
第二个参数有时是HTTP主体,而另一些时候整个
config
对象是axios
的,这两者之间的混淆是由于HTTP规则是如何实现的。有时HTTP调用不需要HTTP正文就可以被认为是有效的。以下是使用axios发送各种HTTP谓词所需格式的简要总结:
:两种方式获取
- 第一种方法
axios.get('/user?ID=12345') .然后(功能(响应){ //做点什么 })
- 第二种方法
axios.get(“/user”{ 参数:{ 身份证号码:12345 } }) .然后(功能(响应){ //做点什么 })
关键字params
- 第一种方法
和POST
PATCH
axios.post('any-url',有效负载)。然后( //有效负载是请求的主体 //做点什么 ) patch('any-url',payload)。然后( //有效负载是请求的主体 //做点什么 )
删除
axios.delete('url',{data:payload})。然后( //这次注意数据关键字。非常重要 //有效负载是请求主体 //做点什么 )
请求需要一个get
键来正确设置查询参数params
带有主体的请求需要在delete
键下进行设置数据
- 我遇到了同样的问题。。。
我通过创建一个自定义axios实例解决了这个问题。然后用它发出一个经过身份验证的删除请求
const token = localStorage.getItem('token');
const request = axios.create({
headers: {
Authorization: token
}
});
await request.delete('<your route>, { data: { <your data> }});
const-token=localStorage.getItem('token');
const request=axios.create({
标题:{
授权:令牌
}
});
等待请求。删除(',{data:{}});
我遇到了同样的问题,我是这样解决的:
axios.delete(url, {data:{username:"user", password:"pass"}, headers:{Authorization: "token"}})
对于删除,您需要按照以下步骤执行
axios.delete("/<your endpoint>", { data:<"payload object">})
axios.delete(“/”,{data:})
它对我有效。因此,经过多次尝试,我发现它有效 请按照订单顺序操作这非常重要,否则将无法正常工作
axios.delete(URL, {
headers: {
Authorization: authorizationToken
},
data: {
source: source
}
});
实际上,
axios.delete
支持请求主体它接受两个参数:一个
URL
和一个可选的config
。那就是
axios.delete(url: string, config?: AxiosRequestConfig | undefined)
您可以执行以下操作来设置删除请求的响应正文:
let config = {
headers: {
Authorization: authToken
},
data: { //! Take note of the `data` keyword. This is the request body.
key: value,
... //! more `key: value` pairs as desired.
}
}
axios.delete(url, config)
我希望这对别人有帮助 我找到了一种有效的方法:
axios
.delete(URL, {
params: { id: 'IDDataBase'},
headers: {
token: 'TOKEN',
},
})
.then(function (response) {
})
.catch(function (error) {
console.log(error);
});
我希望这对你也有用。我尝试了上述所有方法,但都不适用于我。我最终只是使用PUT(inspiration found),只是更改了服务器端逻辑,对这个url调用执行了删除。(django rest框架函数重写) e、 g
对于那些尝试了上述所有方法但仍然没有看到请求有效负载的用户,请确保:
"axios": "^0.21.1" (not 0.20.0)
然后,上述解决方案起作用
axios.delete("URL", {
headers: {
Authorization: `Bearer ${token}`,
},
data: {
var1: "var1",
var2: "var2"
},
})
您可以使用
req.body.var1, req.body.var2
问题是:
如果我们有:
`myData = { field1: val1, field2: val2 }`
我们可以将数据(JSON)转换为字符串,然后将其作为参数发送:
`axios.delete(url + **JSON.stringify(myData)**,
{ headers: { 'authorization': localStorage.getItem('token') } }
)`
在服务器端,我们可以取回我们的对象:
`app.delete("/api/delete/:myData", requireAuth, (req, res) => {
const myData = **JSON.parse(req.params.myData)**
})`
这对我不起作用。。。我有
const headers={'Authorization':…}
和data={'username':…}
以axios.delete('http://...“,{headers,data})
但服务器无法访问这些头…从浏览器发出的请求表示不同。请参阅此Stackblitz()以及浏览器网络选项卡()中的请求。在这里,您需要确保您以正确的方式读取服务器端的标题,或者请求没有被拦截和篡改,我正在使用React和Django,问题是我想在相同的删除请求中发送一个正文和标题。您的回答让我希望在堆栈溢出上有一个+2向上投票功能。这是唯一一个详细解释它的答案。谢谢,这真的有助于理解其他人。如何使用params而不是body发送删除请求?这个问题的最佳答案。谢谢。@MaFiA,如果您想发送带参数的删除请求。您只需使用query stringsThanks将其放入url,我在我的nestJs HttpService delete方法中使用了它
`app.delete("/api/delete/:myData", requireAuth, (req, res) => {
const myData = **JSON.parse(req.params.myData)**
})`