Quando usar ResponseEntity?

Vejamos a controller com o endpoint abaixo: @RestController @RequestMapping("v1/hello") public class ExampleController { @GetMapping public ResponseEntity get() { return ResponseEntity.ok("Hello World!"); } } 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: @RestController @RequestMapping("v1/hello") public class ExampleController { @GetMapping public String get() { return "Hello World!"; } } 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: @RestController @RequestMapping("v1/hello") public class ExampleController { @GetMapping @ResponseStatus(HttpStatus.ACCEPTED) public String get() { return "Hello World!"; } } 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: @RestController @RequestMapping("v1/hello") public class ExampleController { @GetMapping public ResponseEntity get() { return ResponseEntity.ok() .header("X-Test", "Blabla") .body("Hello World!"); } }

Jan 9, 2025 - 16:23
 0
Quando usar ResponseEntity?

Vejamos a controller com o endpoint abaixo:

@RestController
@RequestMapping("v1/hello")
public class ExampleController {

    @GetMapping
    public ResponseEntity<String> get() {
        return ResponseEntity.ok("Hello World!");
    }
}

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:

@RestController
@RequestMapping("v1/hello")
public class ExampleController {

    @GetMapping
    public String get() {
        return "Hello World!";
    }
}

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:

@RestController
@RequestMapping("v1/hello")
public class ExampleController {

    @GetMapping
    @ResponseStatus(HttpStatus.ACCEPTED)
    public String get() {
        return "Hello World!";
    }
}

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:

@RestController
@RequestMapping("v1/hello")
public class ExampleController {

    @GetMapping
    public ResponseEntity<String> get() {
        return ResponseEntity.ok()
            .header("X-Test", "Blabla")
            .body("Hello World!");
    }
}