본문 바로가기

프로그래밍/Spring

[Spring] ResponseEntity

ResponseEntity란

 웹 서비스에서는 많은 정보를 송수신하게된다. 각각의 다른 웹 서비스들이 대화하려면 서로 정해진 약속에 맞게 데이터를 가공해서 보내야하는데, 이때 보내는 요청 및 데이터 형식을 HTTP(HyperText Transport Protocol)이라고 한다.  우리는 Spring Framework에서 제공하는 클래스 중 *HttpEntity를 상속받아 구현한 클래스인 ResponseEntity를 활용하여 빠르고 쉽게 규격에 맞는 HTTP응답을 생성할 수 있다.

 ResponseEntity는 사용자의 HttpRequest(요청)에 대한 응답(HttpStatus, HttpHeaders, HttpBody)을 포함한다.

 

*HttpEntity

  HTTP요청 또는 응답에 해당하는 HttpHeader와 HttpBody를 포함하는 클래스

public class HttpEntity<T> {

	private final HttpHeaders headers;

	@Nullable
	private final T body;
}

 

코드 예제

import lombok.Data;

@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;
    }
}

 Message라는 클래스를 만들어 상태코드, 메세지, 데이터를 담을 필드를 추가한다.

 

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;
    }
}

 상태코드로 보낼 몇가지의 예시만 적어놓은 enum을 만든다.

 

@RestController
public class UserController {
    private UserDaoService userDaoService;

    public UserController(UserDaoService userDaoService) {
        this.userDaoService = userDaoService;
    }

    @GetMapping(value = "/user/{id}")
    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);
    }


}

 이후 Controller를 하나 만들고 id를 통해서 User를 가져온 뒤, Message 클래스를 통해서 StatusCode, ResponseMessage, ResponseData를 담아 클라이언트에게 응답을 보내는 코드를 작성한다.

 

 응답 결과

'프로그래밍 > Spring' 카테고리의 다른 글

[Spring] SpringSecurity 비밀번호 암호화  (0) 2022.03.15
[Spring] 싱글톤 패턴(Singleton pattern)  (0) 2022.03.11
[Spring] 의존성주입(Dependency Injection, DI)  (0) 2022.03.11
[Spring] Bean  (0) 2022.03.02
[Spring] Annotation  (0) 2022.02.27