Estoy desarrollando una aplicación web simple usando Vuejs/Nuxtjs que está haciendo una llamada de back-end al Java Quarkus Service usando la Axios POST request . Dentro de la POST request estoy enviando los datos JSON .
El problema al que me enfrento es que los datos JSON que envío son un poco diferentes de los datos que recibo en el Java Quarkus Service .
He puesto un console.log justo antes de enviar los datos JSON al servicio de Java y los datos se ven así:
{ "person": { "name": "abcd" }, "animal": { "name": "xyz" } } He puesto un System.out al principio del Java Service y los datos que estoy recibiendo allí se parecen a esto:
{ "inputTemplate": { "person": { "name": "abcd" }, "animal": { "name": "xyz" } } } Como podemos ver, se ha agregado la inputTemplate key que no aparece en JavaScript . No estoy seguro de por qué es eso.
La siguiente es la llamada de Vuejs Axios , aquí el archivo console.log funciona perfectamente y inputTemplate key no aparece como se describe en JSON arriba.
const headers = { 'Content-Type': 'application/json' } const person = { name: 'abcd' } const animal = { name: 'xyz' } const inputTemplate = { person, animal} console.log(JSON.stringify(inputTemplate, null, 4)) this.$axios.post('/generateTestData', { inputTemplate }, { headers }) .then((response) => { console.log('Response : ' + JSON.stringify(response.data, undefined, '\t')) }) .catch((error) => { console.log('Error : ' + ' Unable to obtain data, Error : ' + error) }) El siguiente es el Java Quarkus service donde inputTemplate key de entrada adicional:
public class TestDataGeneratorResource { @POST @Path("/generateTestData") @Consumes(MediaType.APPLICATION_JSON) @Produces(MediaType.APPLICATION_JSON) public String generateTestData(String inputTemplate) { System.out.println(inputTemplate); } } ¿Puede alguien decirme cómo evitar obtener la inputTemplate de entrada dentro del Java Service ?
use el operador de propagación para pasar el objeto: this.$axios.post('/generateTestData', {...inputTemplate}, {headers})