2017-12-06 4 views
-1

axios.put Methode funktioniert nicht, während axios.post funktioniert.Axios PUT Anfrage funktioniert nicht

Dies ist ein funktionierendes Beispiel für Post-Anfrage. (Beispiel)

let response = await axios.post(`${ROOT_URL}/urls/url/`, { 
    post_id, 
    password, 
    content 
    }, { headers }); 
    console.log(response.status) // 201. 

ich einfach kopiert und eingefügt die gültige Post-Anforderung und modifizierte einige Felder und Verfahren für put Anfrage. Aber es gibt 400 Fehler auf der Serverseite zurück.

let response = await axios.put(`${ROOT_URL}/profile/update/`, { 
    title, 
    gender 
    }, { headers }); <- Server prints 400 HTTP error. 

Getestet habe ich mit Postman und ich bestätigt, dass es mit Put-Methode funktioniert. Ich muss denken, dass meine Syntax für axios.put falsch ist, aber ich bin nicht sicher, wie es mit der Post-Methode anders sein kann.

Wenn Sie die offiziellen Doc-Seite von axios sehen, sieht es fast identisch aus. Axios documentation link

Und axios Version 0.16.2: "axios": "^0.16.2",

+0

Ich würde der Server sicherstellen, dass ein Objekt ähnlich wie '{title: 'title', Geschlecht: 'Geschlecht'} erwartet' wie das ist, was Ihr zweiter Parameter erweitert zu. Könnten Sie auch Code schreiben, der zeigt, wie Ihr Header-Objekt aussieht? –

+0

Ich würde versuchen, zu sehen, was im Servercode passiert, wenn es den Endpunkt trifft. – maxpaj

+0

JA, du hattest recht. Ich setzte das Geschlecht mit "u" und es druckte 400. Der Grund war, dass ich mein Backend-Gender-Feld gesetzt habe, um einen bestimmten String-Wert zu wählen. Danke für deinen Rat! –

Antwort

2

400 Ungültige Anforderung ist nicht 405 Methode nicht erlaubt.

Ich würde überprüfen, was Ihr Beitrag korrekt ist.

Ist das ein gültiges Objekt?

{ 
    title, 
    gender 
} 

Beispiel:

axios.put('/api/something', { 
    foo: bar 
}) 
    .then(function (response) { 
     // do something... 
    }.bind(this)) 
    .catch(function (error) { 
     console.log(error) 
    }); 
+0

Es ist ein gültiges Objekt, vorausgesetzt Ihre Umgebung unterstützt es6 [(docs)] (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Object_initializer#New_notations_in_ECMAScript_2015) –

+0

warum tun Sie '.bind (this))'? –

+0

@Suana Morales, kopiert und eingefügt von meinem Code, ich brauchte Zugriff auf den äußeren Bereich im Erfolgs-Handler, nicht in diesem Beispiel benötigt –