Envoyer “raw” charge utile à l'Axios
Comment puis-je envoyer un raw de charge/corps de la requête à Axios?
Le point de terminaison j'essaie d'appeler attend le corps de la requête pour n'être qu'une chaîne qu'il va ramasser et à utiliser.
Si j'essaie juste passer d'une chaîne à axios.post()
pour la requestBody
, il va le convertir en un objet sans valeur ({ "this+is+my+message": "" }
) et finit par obtenir analysée comme ce "this+is+my+message="
.
J'ai vérifié la documentation, mais je ne trouve pas d'option qui semblait fonctionner. transformRequest
semblait être le plus évident, mais il a envoyé dans les cordes et j'ai envoyé la chaîne (littéralement d => d
), mais il semble toujours à la convertir en une valeur d'objet JSON.
Vous devez vous connecter pour publier un commentaire.
Il s'avère, si j'ai mis le
Content-Type
en-tête detext/plain
, il ne sera pas le convertir en JSON ou des données de formulaire et de l'envoyer que je veux.Que j'ai déposé ici un problème similaire, je tiens à fournir une réponse supplémentaire. Je suis le chargement d'un fichier image (à partir d'un
<input type="file>
élément) et de l'envoyer au serveur à l'aide de axios - mais comme raw corps, par opposition à l'enveloppant dans unmultipart/form-data
demande.Il semble que dans le cas des données brutes, axios fonctionne mieux si les données sont fournies dans un
ArrayBuffer
. Ceci peut être réalisé en utilisant par exemple le fragment de code suivant (ES6):(à l'aide de la
Content-Type
en-tête de cette façon est légèrement non-standard, mais dans mon cas, uniquement utilisé en tant que moyen de transport le nom de fichier original)Voir:
https://github.com/axios/axios#request-config - description de
data
https://developer.mozilla.org/en-US/docs/Web/API/FileReader/readAsArrayBuffer