Axios使用正文和标题删除请求?

问题描述 投票:14回答:8

我在ReactJS中编程时正在使用Axios,我假装向我的服务器发送DELETE请求。

为此,我需要标题:

headers: {
  'Authorization': ...
}

而身体是由

var payload = {
    "username": ..
}

我一直在网络中搜索,只发现DELETE方法需要一个“param”并且不接受“数据”。

我一直试图像这样发送它:

axios.delete(URL, payload, header);

甚至

axios.delete(URL, {params: payload}, header);

但似乎没有任何作用......

有人可以告诉我它是否可能(我认为是)发送带有标题和正文的DELETE请求以及如何执行此操作?

先感谢您!

javascript reactjs http axios http-delete
8个回答
9
投票

经过多次尝试,我发现它有效。

请遵循顺序,这是非常重要的,否则它将无法正常工作

axios.delete(
        URL,
        {headers: {
          Authorization: authorizationToken
        },
        data:{
          source:source
        }}
      );

42
投票

axiox.delete确实支持请求正文。它接受两个参数:url和optional config。您可以使用config.data设置响应正文,如下所示:

axios.delete(url, { data: { foo: "bar" } });

看到这里 - https://github.com/axios/axios/issues/897


29
投票

以下是使用axios发送各种http动词所需格式的简短摘要:

  • qazxsw poi:两种方式 第一种方法 qazxsw poi 第二种方法 qazxsw poi

以上两个是等价的。在第二种方法中观察GET关键字

  • axios.get('/user?ID=12345') .then(function (response) { // Do something }) axios.get('/user', { params: { ID: 12345 } }) .then(function (response) { // Do something })

params
  • POST

PATCH

关键要点

  • axios.post('any-url', payload).then( // payload is the body of the request // Do something ) axios.patch('any-url', payload).then( // payload is the body of the request // Do something )请求可选地需要DELETE密钥来正确设置查询参数
  • axios.delete('url', { data: payload }).then( // Observe the data keyword this time. Very important // payload is the request body // Do something )要求身体需要它在get键下设置

4
投票

axios.teleti kazxsopoi货币。

axios.delete(url [,config])

字段params

这使得API调用可以写成:

delete

3
投票

我遇到了同样的问题,我解决了这个问题:

data

2
投票

要通过passed a url and an optional configuration发送带有一些标头的HTTP DELETE,我已经这样做了:

available to the configuration can include the headers

不同HTTP动词(GET,POST,PUT,DELETE)的const headers = { 'Authorization': 'Bearer paperboy' } const data = { foo: 'bar' } axios.delete('https://foo.svc/resource', {headers, data}) 语法很棘手,因为有时候第二个参数应该是HTTP主体,有些时候(当它可能不需要时)你只需要传递头文件作为第二个参数。

但是,假设您需要在没有HTTP主体的情况下发送HTTP POST请求,那么您需要将axios.delete(url, {data:{username:"user", password:"pass"}, headers:{Authorization: "token"}}) 作为第二个参数传递。

请记住,根据配置对象(axios)的定义,在调用 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); 时,您仍然可以通过axios字段在HTTP调用中传递HTTP正文,但是对于HTTP DELETE动词,它将被忽略。

第二个参数有时是HTTP主体和其他时间undefined的整个https://github.com/axios/axios#request-config对象之间的这种混淆是由于HTTP规则的实现方式。有时,HTTP调用不需要HTTP主体才能被视为有效。


0
投票

我遇到了同样的问题......我通过创建自定义axios实例解决了这个问题。并使用它来进行经过身份验证的删除请求..

data

0
投票

对于删除,您需要按照以下步骤操作

axios.delete

它对我有用。

© www.soinside.com 2019 - 2024. All rights reserved.