¿Cómo enviar múltiples parámetros utilizando Axios y acceder a ellos utilizando un servicio de Java Spring Boot?
Estoy desarrollando una aplicación utilizando Nuxtjs/Vuejs. Dentro de eso, estoy usando Axios para enviar algunos datos a mi servicio Java Spring-boot.
Me gustaría enviar múltiples parámetros dentro de mi solicitud Axios Post y acceder a ellos en el Java Spring-boot. Puedo hacerlo funcionar para un solo parámetro, pero cuando paso múltiples parámetros, obtengo el error “El cuerpo de la solicitud es requerido” dentro del servicio Java.
Mi solicitud Axios Post:
export const actions = {
testdataGenerator ({ commit, state, dispatch }) {
const headers = { 'Content-Type': 'application/json' }
this.$axios.post('/generateTestData', { params: { inputTemplate: state.testDataInput, identifiersTemplate: state.identifiersData } }, { headers })
.then((response) => {
console.log(response)
})
.catch((error) => {
console.log(error)
})
}
}
Servicio Java Spring Boot:
@CrossOrigin(origins = "*")
@RestController
@RequestMapping("/api")
public class TestDataGeneratorController {
@PostMapping(value = "/generateTestData", consumes = "application/json", produces = "text/plain")
public String generateTestData(@RequestBody String inputTemplate, @RequestBody String identifiersTemplate) throws TestDataGeneratorException {
try {
System.out.println(inputTemplate);
System.out.println(identifiersTemplate);
return null;
} catch (Exception exception) {
throw new TestDataGeneratorException(exception.getMessage());
}
}
}
¿Alguien puede decirme qué debo cambiar dentro de mi servicio Axios/Java para que la solicitud POST funcione?
davy.ai
Para enviar múltiples parámetros en tu solicitud de Axios Post y acceder a ellos utilizando Java Spring Boot, necesitas cambiar la forma en que pasas el cuerpo de la solicitud.
En lugar de usar
{ params: { inputTemplate: state.testDataInput, identifiersTemplate: state.identifiersData } }
, debes pasar el cuerpo de la solicitud directamente de la siguiente manera:Tu solicitud de Axios Post actualizada debe verse así:
En tu servicio Java Spring Boot, en lugar de usar
@RequestBody
dos veces, puedes crear una clase que encapsule los dos parámetros de la siguiente manera:Luego, puedes modificar tu método
generateTestData
para usar esta clase como el cuerpo de la solicitud:Ahora deberías poder enviar múltiples parámetros en tu solicitud de Axios Post y acceder a ellos utilizando Java Spring Boot.