본문 바로가기
Programming

백엔드 응답모델(result) 구성하기

by BTC_동동 2023. 12. 8.

안녕하세요 여러분! 일단고 팀입니다.

요즘 독감이 유행이라고 들었습니다. 모두 독감 조심하세요.

오늘은 백엔드의 응답모델에 대해 알아보고, 이를 구현하는 코드를 직접 작성하겠습니다.

 

 

응답 모델이 필요한 이유

백엔드에서 응답모델을 구현 할 필요는 없습니다. 하지만 응답 모델을 구현해두면 재활용성이 높아지고, 서비스를 구성할 때 코드를 간결하게 만들 수 있다는 장점이 있습니다.

 

응답 모델의 구성

응답 모델에서 필요한 내용은 다음과 같습니다.

  • 상태 코드 (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

댓글