# Spring boot Day 15

In Spring Boot, the term "Response Entity" refers to a class provided by the Spring Framework that represents the entire HTTP response to be returned from a controller method. It encapsulates the response body, status code, and headers, allowing developers to have fine-grained control over the HTTP response returned to the client.

The `ResponseEntity` class is generic, which means you can specify the type of data you want to include in the response body. For example, you can use `ResponseEntity<String>` if you want to return a response containing a string, or `ResponseEntity<MyObject>` if you want to return an object of a custom class `MyObject`.

Using `ResponseEntity` is particularly useful when you need to handle different HTTP status codes or set custom headers in your response. It allows you to create more robust and flexible API endpoints.

Here's a basic example of how you can use `ResponseEntity` in a Spring Boot controller:

```java
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
@RequestMapping("/api")
public class MyController {

    @GetMapping("/hello")
    public ResponseEntity<String> sayHello() {
        String message = "Hello, world!";
        return ResponseEntity.ok(message);
    }

    @GetMapping("/not-found")
    public ResponseEntity<String> notFound() {
        return ResponseEntity.notFound().build();
    }

    @GetMapping("/custom-header")
    public ResponseEntity<String> customHeader() {
        String message = "This response has a custom header!";
        HttpHeaders headers = new HttpHeaders();
        headers.add("Custom-Header", "Custom-Value");
        return new ResponseEntity<>(message, headers, HttpStatus.OK);
    }
}
```

In the above example, the `sayHello()` method returns a `ResponseEntity` with the message "Hello, world!" and an HTTP status code 200 (OK). The `notFound()` method returns a `ResponseEntity` with an HTTP status code 404 (Not Found) to indicate that the requested resource was not found. The `customHeader()` method returns a `ResponseEntity` with a custom header "Custom-Header" set to "Custom-Value" along with an HTTP status code 200 (OK).

Using `ResponseEntity` gives you greater control over the HTTP response and allows you to handle different scenarios more effectively in your Spring Boot applications.
