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!");
}
}
Top comments (0)