Axios: Prise en charge de la suppression du corps

Créé le 13 mai 2017  ·  7Commentaires  ·  Source: axios/axios

C'est probablement un choix de conception de l'équipe axios et pour une bonne raison, mais j'écris tous mes POST/GET/PUT comme ceci :

const res = await axios.post(url, { 
  data: {
    ...
  }
})

Et mon serveur attend parfois des données à l'intérieur du corps de la requête DELETE (ce qui peut ne pas être techniquement conforme aux spécifications mais néanmoins c'est courant), auquel cas je dois écrire mon DELETE sous cette forme :

      const res = await axios({
        method: 'DELETE',
        url: 'url',
        data: {
          ...
        }
      })

Ce qui fonctionne bien mais je suis obligé d'utiliser la deuxième syntaxe car le axios.delete ne prend pas en charge un corps de requête.

Je voudrais donc demander que axios.delete prenne en charge un corps de requête.

Merci

Commentaire le plus utile

axiox.delete prend en charge un corps de requête. Il accepte deux paramètres : url et facultatif config . Vous pouvez utiliser config.data pour définir le corps de la réponse comme suit :

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

post , put et patch acceptent 3 paramètres : url , data et config pour que vous puissiez pouvez utiliser le deuxième paramètre pour définir le corps de la réponse comme ceci :

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

J'espère que ça aide!

Tous les 7 commentaires

Nous utilisons souvent data avec les requêtes GET sur le serveur et elles sont traduites en paramètres de requête. Le manque de prise en charge des données sur certaines méthodes est un gros inconvénient pour axios dans mes espoirs d'un code plus isomorphe.

Merci, j'ai trouvé cette réponse

axiox.delete prend en charge un corps de requête. Il accepte deux paramètres : url et facultatif config . Vous pouvez utiliser config.data pour définir le corps de la réponse comme suit :

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

post , put et patch acceptent 3 paramètres : url , data et config pour que vous puissiez pouvez utiliser le deuxième paramètre pour définir le corps de la réponse comme ceci :

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

J'espère que ça aide!

Je pense que le README rend difficile la compréhension :

  // `data` is the data to be sent as the request body
  // Only applicable for request methods 'PUT', 'POST', and 'PATCH'
  // When no `transformRequest` is set, must be of one of the following types:
  // - string, plain object, ArrayBuffer, ArrayBufferView, URLSearchParams
  // - Browser only: FormData, File, Blob
  // - Node only: Stream, Buffer
  data: {
    firstName: 'Fred'
  },

Cette partie : // Only applicable for request methods 'PUT', 'POST', and 'PATCH' surtout.

s'il vous plaît ajouter ce commentaire à la docs

C'est sur les docs https://github.com/axios/axios#request -method-aliases

quelle est la différence entre ces deux?

this.$axios.$delete(queryData.url,
        {
          params: { id: String(queryData.id) }
        })
this.$axios.$delete(queryData.url,
        {
          body: { id: String(queryData.id) }
        })

[params] a fonctionné de mon côté

Cette page vous a été utile?
0 / 5 - 0 notes