@RequestBody
efeito:
i) Esta anotação é utilizada para ler os dados da parte do corpo da requisição Request, utilizar o HttpMessageConverter configurado pelo sistema para analisá-lo, e então vincular os dados correspondentes ao objeto a ser retornado;
ii) Em seguida, vincule os dados do objeto retornados por HttpMessageConverter aos parâmetros do método no controlador.
Quando usar:
A) Ao usar GET ou POST, julgue de acordo com o valor do tipo de conteúdo do cabeçalho da solicitação:
- application/x-www-form-urlencoded, opcional (ou seja, não obrigatório, pois os dados neste caso @RequestParam, @ModelAttribute também podem ser processados, claro que @RequestBody também pode ser processado);
- multipart/form-data, não pode ser processado (isto é, dados neste formato não podem ser processados usando @RequestBody);
- Outros formatos devem ser usados (outros formatos incluem application/json, application/xml, etc. Os dados nesses formatos devem ser processados usando @RequestBody);
B) Ao enviar via PUT, julgue de acordo com o valor do cabeçalho da solicitação Content-Type:
- application/x-www-form-urlencoded, obrigatório;
- multipart/form-data, não pode manipular;
- outros formatos, necessários;
Observação: o formato de codificação de dados da parte do corpo da solicitação é especificado pelo Content-Type da parte do cabeçalho;
@ResponseBody
efeito:
Essa anotação é usada para converter o objeto retornado pelo método Controller no formato especificado por meio de um HttpMessageConverter apropriado e, em seguida, gravá-lo na área de dados do corpo do objeto Response.
Quando usar:
É usado quando os dados retornados não são uma página com tags html, mas dados em algum outro formato (como json, xml, etc.);