Ainda não tem acesso? Estude com a gente! Matricule-se
Ainda não tem acesso? Estude com a gente! Matricule-se

@RequestBody só aceita String

Quando tento receber o RequestBody e fazer o bind na Model ou qualquer outra Class, o servidor responde , com erro HTTP 415:

HTTP Status 415 – Unsupported Media Type
Type Status Report

Description The origin server is refusing to service the request because the payload is in a format not supported by this method on the target resource.

Com esse código:

@RequestMapping("/save")
public String save(@RequestBody ProductModel model) {  }

Porém se receber o RequestBody como String funciona:

@RequestMapping("/save")
public String save(@RequestBody String body) {
  System.out.println(body);
}

Porém o resultado vem em forma de query:

title=T%C3%83%C2%ADtulo&pages=1&desc=Descri%C3%83%C2%A7%C3%83%C2%A3o

Alguma sugestão ?

At Michael.

2 respostas

Talvez eu tenha esquecido de comentar um erro que sempre ocorre ao salvar o projeto.

Errors occurred during the build.
Errors running builder 'Spring Project Builder' on project 'alura-mvc'.
org.eclipse.jdt.internal.compiler.env.IBinaryMethod.getParameterAnnotations(I)[Lorg/eclipse/jdt/internal/compiler/env/IBinaryAnnotation;

Porém a referencia é ao internal compiler do eclipse, então acho que não afeta o problema anterior.

HTTP 415 significa que o servidor não entende o formato do media type do request.

No seu request, informe que é um application/json, será feito o parse para o objeto.