ResponseEntity 란.

김동민·2023년 11월 22일

Spring

목록 보기
2/5

1. ResponseEntity , RequestEntity 란?

Spring Framework에서 제공하는 클래스중 HttpEntity라는 클래스를 상속받는 클래스.

public class RequestEntity<T> extends HttpEntity<T>

public class ResponseEntity<T> extends HttpEntity<T>

2. HttpEntity 란?

HttpHeader , HttpBody를 포함하는 클래스.

public class HttpEntity<T> {

	private final HttpHeaders headers;

	@Nullable
	private final T body;
}

3. ResponseEntity 기능은 ?

사용자의 HttpRequest에 대한 응답 데이터(HttpStatus , HttpHeaders , HttpBody)를 포함한다.

예제1)
// 상태코드 반환하기
public ResponseEntity getAllUsers() {
        return new ResponseEntity(HttpStatus.OK); // 상태코드 200으로 나옴
}
예제2)
// 1. enum클래스 활용해서 상태코드,메세지,데이터를 담을 필드를 추가해주고
public enum StatusEnum {

    OK(200, "OK"),
    BAD_REQUEST(400, "BAD_REQUEST"),
    NOT_FOUND(404, "NOT_FOUND"),
    INTERNAL_SERER_ERROR(500, "INTERNAL_SERVER_ERROR");

    int statusCode;
    String code;

    StatusEnum(int statusCode, String code) {
        this.statusCode = statusCode;
        this.code = code;
    }
}

// 2. message클래스를 만들어 상태코드,메세지,데이터를 담고
@Data
public class Message {

    private StatusEnum status;
    private String message;
    private Object data;

    public Message() {
        this.status = StatusEnum.BAD_REQUEST;
        this.data = null;
        this.message = null;
    }
}

// 3. controller클래스에 적용시켜준다.
@RestController
public class UserController {
...

@GetMapping
public ResponseEntity<Message> findById(@PathVariable int id) {
        User user = userDaoService.findOne(id);
        Message message = new Message();
        HttpHeaders headers= new HttpHeaders();
        headers.setContentType(new MediaType("application", "json", Charset.forName("UTF-8")));

        message.setStatus(StatusEnum.OK);
        message.setMessage("성공 코드");
        message.setData(user);

        return new ResponseEntity<>(message, headers, HttpStatus.OK);
    }
}

0개의 댓글