Vejamos a controller com o endpoint abaixo:
<span>@RestController</span><span>@RequestMapping</span><span>(</span><span>"v1/hello"</span><span>)</span><span>public</span> <span>class</span> <span>ExampleController</span> <span>{</span><span>@GetMapping</span><span>public</span> <span>ResponseEntity</span><span><</span><span>String</span><span>></span> <span>get</span><span>()</span> <span>{</span><span>return</span> <span>ResponseEntity</span><span>.</span><span>ok</span><span>(</span><span>"Hello World!"</span><span>);</span><span>}</span><span>}</span><span>@RestController</span> <span>@RequestMapping</span><span>(</span><span>"v1/hello"</span><span>)</span> <span>public</span> <span>class</span> <span>ExampleController</span> <span>{</span> <span>@GetMapping</span> <span>public</span> <span>ResponseEntity</span><span><</span><span>String</span><span>></span> <span>get</span><span>()</span> <span>{</span> <span>return</span> <span>ResponseEntity</span><span>.</span><span>ok</span><span>(</span><span>"Hello World!"</span><span>);</span> <span>}</span> <span>}</span>@RestController @RequestMapping("v1/hello") public class ExampleController { @GetMapping public ResponseEntity<String> get() { return ResponseEntity.ok("Hello World!"); } }
Enter fullscreen mode Exit fullscreen mode
Quando se utiliza a anotação @RestController do Spring, por default os responses são colocados nos body’s das respostas, é desnecessário o uso de ResponseEntity tipificando o retorno do método, apenas o tipo da resposta diretamente, como no exemplo abaixo:
<span>@RestController</span><span>@RequestMapping</span><span>(</span><span>"v1/hello"</span><span>)</span><span>public</span> <span>class</span> <span>ExampleController</span> <span>{</span><span>@GetMapping</span><span>public</span> <span>String</span> <span>get</span><span>()</span> <span>{</span><span>return</span> <span>"Hello World!"</span><span>;</span><span>}</span><span>}</span><span>@RestController</span> <span>@RequestMapping</span><span>(</span><span>"v1/hello"</span><span>)</span> <span>public</span> <span>class</span> <span>ExampleController</span> <span>{</span> <span>@GetMapping</span> <span>public</span> <span>String</span> <span>get</span><span>()</span> <span>{</span> <span>return</span> <span>"Hello World!"</span><span>;</span> <span>}</span> <span>}</span>@RestController @RequestMapping("v1/hello") public class ExampleController { @GetMapping public String get() { return "Hello World!"; } }
Enter fullscreen mode Exit fullscreen mode
Também, por default, no caso de sucesso, o status code utilizado nos enpoints é 200 (OK), ou seja, só se faz necessário alterá-lo quando é desejado utilizar outro status, e não precisa ser utilizado ResponseEntity, basta utilizar a anotação @ResponseStatus acima do método:
<span>@RestController</span><span>@RequestMapping</span><span>(</span><span>"v1/hello"</span><span>)</span><span>public</span> <span>class</span> <span>ExampleController</span> <span>{</span><span>@GetMapping</span><span>@ResponseStatus</span><span>(</span><span>HttpStatus</span><span>.</span><span>ACCEPTED</span><span>)</span><span>public</span> <span>String</span> <span>get</span><span>()</span> <span>{</span><span>return</span> <span>"Hello World!"</span><span>;</span><span>}</span><span>}</span><span>@RestController</span> <span>@RequestMapping</span><span>(</span><span>"v1/hello"</span><span>)</span> <span>public</span> <span>class</span> <span>ExampleController</span> <span>{</span> <span>@GetMapping</span> <span>@ResponseStatus</span><span>(</span><span>HttpStatus</span><span>.</span><span>ACCEPTED</span><span>)</span> <span>public</span> <span>String</span> <span>get</span><span>()</span> <span>{</span> <span>return</span> <span>"Hello World!"</span><span>;</span> <span>}</span> <span>}</span>@RestController @RequestMapping("v1/hello") public class ExampleController { @GetMapping @ResponseStatus(HttpStatus.ACCEPTED) public String get() { return "Hello World!"; } }
Enter fullscreen mode Exit fullscreen mode
Então porque existe a ResponseEntity?
Para casos em que você precisa adicionar mais informações na resposta que não apenas o body e o status, como por exemplo adicionar um header ao response:
<span>@RestController</span><span>@RequestMapping</span><span>(</span><span>"v1/hello"</span><span>)</span><span>public</span> <span>class</span> <span>ExampleController</span> <span>{</span><span>@GetMapping</span><span>public</span> <span>ResponseEntity</span><span><</span><span>String</span><span>></span> <span>get</span><span>()</span> <span>{</span><span>return</span> <span>ResponseEntity</span><span>.</span><span>ok</span><span>()</span><span>.</span><span>header</span><span>(</span><span>"X-Test"</span><span>,</span> <span>"Blabla"</span><span>)</span><span>.</span><span>body</span><span>(</span><span>"Hello World!"</span><span>);</span><span>}</span><span>}</span><span>@RestController</span> <span>@RequestMapping</span><span>(</span><span>"v1/hello"</span><span>)</span> <span>public</span> <span>class</span> <span>ExampleController</span> <span>{</span> <span>@GetMapping</span> <span>public</span> <span>ResponseEntity</span><span><</span><span>String</span><span>></span> <span>get</span><span>()</span> <span>{</span> <span>return</span> <span>ResponseEntity</span><span>.</span><span>ok</span><span>()</span> <span>.</span><span>header</span><span>(</span><span>"X-Test"</span><span>,</span> <span>"Blabla"</span><span>)</span> <span>.</span><span>body</span><span>(</span><span>"Hello World!"</span><span>);</span> <span>}</span> <span>}</span>@RestController @RequestMapping("v1/hello") public class ExampleController { @GetMapping public ResponseEntity<String> get() { return ResponseEntity.ok() .header("X-Test", "Blabla") .body("Hello World!"); } }
Enter fullscreen mode Exit fullscreen mode
暂无评论内容