Quando usar ResponseEntity?

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

原文链接:Quando usar ResponseEntity?

© 版权声明
THE END
喜欢就支持一下吧
点赞10 分享
It is during our darkest moments that we must focus to see the light.
越是在艰难困苦的时候,我们越是要看到希望
评论 抢沙发

请登录后发表评论

    暂无评论内容