Olá, estou tentando fazer uma página enviar uma requisição POST para meu projeto Spring, porém estou enfrentando um erro. Quando coloco para o Spring receber em forma de String, como está abaixo:
@RestController
@RequestMapping("login")
public class AuthController {
@PostMapping
public void login(@RequestBody String data){
}
}
Ele funciona perfeitamente, porém ao colocar para receber em uma DTO, ele quebra e aparece uma mensagem de erro. Vou deixar o controller, dto e mensagem de erro abaixo:
@RestController
@RequestMapping("login")
public class AuthController {
@PostMapping
public void login(@RequestBody UserDataLoginInputDTO data){
}
}
public record UserDataLoginInputDTO (
@NotBlank @Email String user,
@NotBlank String password) {
}
Resolved [org.springframework.web.HttpMediaTypeNotSupportedException: Content-Type 'text/plain;charset=UTF-8' is not supported]
Pesquisei e não sei o que fazer, abaixo deixarei a forma da minha requisição:
var form = document.querySelector("#form")
form.addEventListener("submit", (event) => {
event.preventDefault();
var headers = new Headers();
headers.append("Content-Type", "application/json")
headers.append('Access-Control-Allow-Origin', 'http://localhost:8080');
headers.append('Access-Control-Allow-Credentials', 'true');
var formData = new FormData(form);
var data = Object.fromEntries(formData);
var jsonData = JSON.stringify(data);
fetch("http://localhost:8080/login",{
mode: 'no-cors',
method: "POST",
headers: headers,
body: jsonData
})
.then(response = response.json())
.then(result => console.log(result))
.catch(err => console.log(err))
})
Espero que possam me ajudar. Obrigado!