I am developing a simple web application using the Vuejs/Nuxtjs
which is making a backend call to Java Quarkus Service
using the Axios POST request
. Within the POST request
I am sending the JSON
data.
The problem I am facing is that the JSON
data that I am sending is bit different than the data I am receiving in the Java Quarkus Service
.
I have put a console.log
just before sending the JSON data to the Java service and the data looks something like this:
{
"person": {
"name": "abcd"
},
"animal": {
"name": "xyz"
}
}
I have put a System.out
at the beginning Java Service
and the data I am receiving there is looking something like this:
{
"inputTemplate": {
"person": {
"name": "abcd"
},
"animal": {
"name": "xyz"
}
}
}
As we can see the inputTemplate key
has been added which is not coming up within the JavaScript
. Not sure why is that.
Following is the call from Vuejs Axios
, here the console.log
is working perfectly and inputTemplate key
is not showing up as described in JSON above.
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)
})
Following is the Java Quarkus service
where I am getting that additional inputTemplate key
:
public class TestDataGeneratorResource {
@POST
@Path("/generateTestData")
@Consumes(MediaType.APPLICATION_JSON)
@Produces(MediaType.APPLICATION_JSON)
public String generateTestData(String inputTemplate) {
System.out.println(inputTemplate);
}
}
Can someone please let me know how to avoid getting the inputTemplate
within the Java Service
?
Advertisement
Answer
use spread operator to pass the object : this.$axios.post(‘/generateTestData’, { …inputTemplate }, { headers })