안녕하세요 여러분! 일단고 팀입니다.
요즘 독감이 유행이라고 들었습니다. 모두 독감 조심하세요.
오늘은 백엔드의 응답모델에 대해 알아보고, 이를 구현하는 코드를 직접 작성하겠습니다.
응답 모델이 필요한 이유
백엔드에서 응답모델을 구현 할 필요는 없습니다. 하지만 응답 모델을 구현해두면 재활용성이 높아지고, 서비스를 구성할 때 코드를 간결하게 만들 수 있다는 장점이 있습니다.
응답 모델의 구성
응답 모델에서 필요한 내용은 다음과 같습니다.
- 상태 코드 (Status Code): HTTP 응답의 가장 기본적인 요소 중 하나로, 요청의 성공 여부나 실패 원인을 나타냅니다. 예를 들어, 200은 성공, 404는 찾을 수 없음, 500은 서버 오류를 나타냅니다.
- 메시지 (Message): 상태 코드에 대한 설명으로, 클라이언트에게 상태 코드의 의미를 알려줍니다. 예를 들어, "성공적으로 처리되었습니다" 또는 "리소스를 찾을 수 없습니다"와 같은 메시지가 될 수 있습니다.
- 데이터 (Data): 클라이언트에게 반환되는 실제 데이터입니다. 이 부분은 작업 결과, 리소스의 내용 또는 오류 상세 정보 등을 포함할 수 있습니다.
- 에러 정보 (Error Information): 오류가 발생한 경우에는 해당 오류에 대한 자세한 정보를 포함해야 합니다. 이는 디버깅이나 사용자에게 정확한 오류 이유를 제공하는 데 도움이 됩니다.
응답 모델 예시
다음은 응답 모델 예시입니다.
import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.annotation.JsonInclude.Include;
import com.fasterxml.jackson.annotation.JsonProperty;
@JsonInclude(Include.NON_NULL)
public class ResultModel {
public static final String STATUS_OK = "OK";
public static final String STATUS_FAIL = "fail";
@JsonProperty("status")
private String status = STATUS_OK;
@JsonProperty("Data")
private MessageModel msg = null;
@JsonProperty(value = "error")
private ErrorModel error = null;
public String getStatus() {
return status;
}
public void setStatus(String status) {
this.status = status;
}
public MessageModel getMessage() {
return msg;
}
public void setError(ResponseSpecification code) {
if(error == null) {
error = new ErrorModel();
}
status = STATUS_FAIL;
error.setCode(code.getCode());
error.setMessage(code.getMessage());
}
public void setError(int code, String message) {
if(error == null) {
error = new ErrorModel();
}
status = STATUS_FAIL;
error.setCode(code);
error.setMessage(message);
}
public ErrorModel getError() {
return error;
}
}
같이 사용되는 MessageModel은 다음과 같습니다.
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Getter;
import lombok.Setter;
@Getter
@Setter
public class MessageModel {
@JsonProperty("Code")
private String code = "";
@JsonProperty("Message")
private String message = "";
}
여기서 코드를 조금 자세히 말씀드리자면, @JsonInclude은 Jackson 라이브러리에서 제공하는 어노테이션 중 하나로, 객체를 JSON으로 변환할 때 어떤 필드를 포함하거나 제외할지를 지정하는 데 사용됩니다.
@JsonInclude(Include.NON_NULL)에 의해서 데이터가 null인 항목에 대해서 출력되지 않습니다. 때문에 응답 데이터를 구성할 때 유용하게 사용할 수 있습니다.
또한 @JsonProperty는 Jackson 라이브러리에서 제공하는 어노테이션 중 하나로, Java 객체의 필드 또는 메서드에 사용되어 JSON 프로퍼티의 이름을 지정합니다. 이 어노테이션을 사용하면 Java 객체와 JSON의 프로퍼티 이름이 다른 경우에 매핑을 지정할 수 있습니다. 이를 통해 JSON 매핑 과정에서 필요한 커스터마이징을 할 수 있으며, 서로 다른 시스템 간에 데이터 교환할 때 특히 유용합니다.
간단해보이지만 활용도가 높은 백엔드 응답모델에 대해서 알아보았습니다! 도움이 되었으면 좋겠습니다.
그럼 즐거운 코딩하세요, 안녕!!!!!!!
'Programming' 카테고리의 다른 글
[개발] Django CSV 내보내기 액션 추가 (0) | 2023.12.11 |
---|---|
[BigData] VectorDB에 대하여 (1) | 2023.12.08 |
[Vue] Vue.js LifeCycle (0) | 2023.12.07 |
Vue Router : 네비게이션 가드 (1) | 2023.12.06 |
[Programming] Spring 이란? (0) | 2023.11.24 |
댓글