vue type form example data content reactjs redux react-redux axios

reactjs - type - Pasar encabezados con axios solicitud POST



axios post login (5)

He escrito una solicitud POST de axios como se recomienda en la documentación del paquete npm como:

var data = { ''key1'': ''val1'', ''key2'': ''val2'' } axios.post(Helper.getUserAPI(), data) .then((response) => { dispatch({type: FOUND_USER, data: response.data[0]}) }) .catch((error) => { dispatch({type: ERROR_FINDING_USER}) })

Y funciona, pero ahora he modificado mi API de back-end para aceptar encabezados.

Tipo de contenido: ''application / json''

Autorización: ''JWT fefege ...''

Ahora, esta solicitud funciona bien en Postman, pero cuando escribo una llamada axios, sigo este enlace y no puedo hacer que funcione.

Constantemente recibo un error de 400 BAD Request .

Aquí está mi solicitud modificada:

axios.post(Helper.getUserAPI(), { headers: { ''Content-Type'': ''application/json'', ''Authorization'': ''JWT fefege...'' }, data }) .then((response) => { dispatch({type: FOUND_USER, data: response.data[0]}) }) .catch((error) => { dispatch({type: ERROR_FINDING_USER}) })

Cualquier ayuda es muy apreciada.


Aquí hay un ejemplo completo de una solicitud axios.post con encabezados personalizados

var postData = { email: "[email protected]", password: "password" }; let axiosConfig = { headers: { ''Content-Type'': ''application/json;charset=UTF-8'', "Access-Control-Allow-Origin": "*", } }; axios.post(''http://<host>:<port>/<path>'', postData, axiosConfig) .then((res) => { console.log("RESPONSE RECEIVED: ", res); }) .catch((err) => { console.log("AXIOS ERROR: ", err); })


Cuando utilice axios, para pasar encabezados personalizados, proporcione un objeto que contenga los encabezados como último argumento

Modifique su solicitud de axios como:

var headers = { ''Content-Type'': ''application/json'', ''Authorization'': ''JWT fefege...'' } axios.post(Helper.getUserAPI(), data, {headers: headers}) .then((response) => { dispatch({type: FOUND_USER, data: response.data[0]}) }) .catch((error) => { dispatch({type: ERROR_FINDING_USER}) })


Json tiene que formatearse con comillas dobles

Me gusta:

headers: { "Content-Type": "application/Jason", "Authorization": "JWT fefege..." }

No solo:

headers: { ''Content-Type'': ''application/json'', ''Authorization'': ''JWT fefege...'' }


La respuesta de Shubham no funcionó para mí.

Cuando utiliza la biblioteca axios y pasa encabezados personalizados, necesita construir encabezados como un objeto con el nombre clave "encabezados". La clave de encabezado debe contener un objeto, aquí está Content-Type y Authorization.

El siguiente ejemplo está funcionando bien.

var headers = { ''Content-Type'': ''application/json'', ''Authorization'': ''JWT fefege...'' } axios.post(Helper.getUserAPI(), data, {"headers" : headers}) .then((response) => { dispatch({type: FOUND_USER, data: response.data[0]}) }) .catch((error) => { dispatch({type: ERROR_FINDING_USER}) })


O, si está utilizando alguna propiedad del prototipo vuejs que no se puede leer en la creación, también puede definir encabezados y escribir, es decir

storePropertyMaxSpeed(){ axios.post(''api/property'', { "property_name" : ''max_speed'', "property_amount" : this.newPropertyMaxSpeed }, {headers : {''Content-Type'': ''application/json'', ''Authorization'': ''Bearer '' + this.$gate.token()}}) .then(() => { //this below peace of code isn''t important Event.$emit(''dbPropertyChanged''); $(''#addPropertyMaxSpeedModal'').modal(''hide''); Swal.fire({ position: ''center'', type: ''success'', title: ''Nova brzina unešena u bazu'', showConfirmButton: false, timer: 1500 }) }) .catch(() => { Swal.fire("Neuspješno!", "Nešto je pošlo do Ä‘avola", "warning"); }) } },