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.

Excepción de falta de cuerpo de solicitud requerido de Vue a Spring.

Estoy tratando de enviar datos desde Vue a Spring.

He estado buscando en todas partes y todo parece perfecto, pero aún así no funciona.

Al principio pensé que tal vez mi clase en el backend tiene más campos de los que envío desde el frontend, pero incluso cuando creé otra clase con los mismos campos, no funciona.

Aquí está mi solicitud de envío:

sendRequest() {
  console.log(this.user);
  (this.loading = true),
    axios.get("http://localhost:8081/user/log-in", this.user)
      .then((response) => {
        console.log(response);
      })
      .catch((error) => {
        (this.isShow = true),
          (this.isHide = false),
          (this.showAlert = true),
          (this.message = error.response.data);
        (this.showMessage = true),
          setTimeout(
            function () {
              this.showMessage = false;
              (this.isShow = false), (this.isHide = true);
            }.bind(this),
            3000
          );
      })
      .finally(() => {
        this.loading = false;
      });
}

Aquí están los datos que envío desde el frontend al backend:

user: {
  userName: "",
  password: ""
},

Aquí está mi clase en el backend que recibe los datos:

public class UserSignUpDTO {
  private String firstName;
  private String userName;
  private String email;
  private String password;
  private String birthDay;
}

Y aquí está el método que recibe los datos:

@GetMapping("/log-in")
public UserDTO logInUser(@RequestBody UserSignUpDTO user) throws Exception {
    return userService.logInUser(user);
}

Mapeo para la solicitud:

@RestController
@RequestMapping("/user")
public class UserController {
}
Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Parece que el problema puede estar relacionado con la solicitud Axios. Según el fragmento de código, estás utilizando una solicitud GET para enviar datos al backend, lo cual no es el método correcto para enviar datos. La solicitud GET se utiliza para recuperar datos, no para enviar datos al servidor.

    Para enviar datos desde Vue a Spring, debes utilizar el método POST en lugar de GET.

    Aquí tienes un fragmento de código actualizado que utiliza el método POST:

    sendRequest() {
      console.log(this.user);
      this.loading = true;
      axios.post("http://localhost:8081/user/log-in", this.user)
        .then((response) => {
          console.log(response);
        })
        .catch((error) => {
          this.isShow = true;
          this.isHide = false;
          this.showAlert = true;
          this.message = error.response.data;
          this.showMessage = true;
          setTimeout(
            function () {
              this.showMessage = false;
              this.isShow = false;
              this.isHide = true;
            }.bind(this),
            3000
          );
        })
        .finally(() => {
          this.loading = false;
        });
    }
    

    Esto debería solucionar el problema y permitirte enviar datos correctamente desde Vue a Spring.

Comments are closed.