es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Carga útil incorrecta en el formulario API “axiom post” de formik.

Estoy intentando crear una solicitud de publicación utilizando Formik en ReactJS. Pero está tomando el valor value: en payload, por eso está ocurriendo un error 400.

const handleSubmit = async (values: any) => {
    await axios
        .post('http://localhost:3000/api/certificates', {
            values,
        }).then(function (response) {
            console.log(response);
        }).catch((err) => {
            console.log('error in call');
            console.log(err);
        }); 
};

Está generando la carga útil.

{
  "values": {
    "sponser": "Hola",
    "startDate": "2021-11-22T13:50:59.073Z",
    "endDate": "2021-11-23T13:50:59.000Z",
    "phaseOfTrial": "1",
    "requestStatus": "BORRADOR",
    "address": "Hola",
    "address2": "Hellpo",
    "zipCode": "12345",
    "city": "nuevo",
    "protoColNo": "12312312",
    "molecules": "asdasda",
    "unAuthMolecule": "SÍ",
    "noOfSubjects": 5,
    "personInCharge": "llasdasdasda",
    "country": "asdasdasd",
    "comments": "asdasdasdasd",
    "attachedFile": "asdasdasd"
  }
}

En la carga útil, está tomando el valor values: al principio, lo cual no espera mi API. ¿Qué error estoy cometiendo? ¿Cómo puedo eliminar esto?

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    El problema está en la forma en que estás pasando los datos a través de la petición post usando Formik. Estás pasando todo el objeto values como un valor para la clave values, lo cual hace que aparezca values: en el cuerpo de la petición.

    Para solucionar esto, necesitas pasar el objeto values directamente a la petición post en vez de envolverlo en otro objeto:

    const handleSubmit = async (values: any) => {
    await axios
    .post('http://localhost:3000/api/certificates', values)
    .then(function (response) {
    console.log(response);
    })
    .catch((err) => {
    console.log('error en la llamada');
    console.log(err);
    });
    };

    Esto enviará el objeto values directamente como el cuerpo de la petición sin la clave values:.

Comments are closed.