[내배캠/TIL(8/5)]Rest api 반환타입 통일하기

손홍서·2022년 8월 8일
0

day74 TIL

반환타입 클래스

package withplanner.withplanner_api.exception;

import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.annotation.JsonPropertyOrder;
import lombok.AllArgsConstructor;
import lombok.Getter;

import static withplanner.withplanner_api.exception.BaseResponseStatus.SUCCESS;

@Getter
@AllArgsConstructor
@JsonPropertyOrder({"isSuccess", "code", "message", "result"})
public class BaseResponse<T> {
    @JsonProperty("isSuccess")
    private final Boolean isSuccess;
    private final String message;
    private final int code;
    @JsonInclude(JsonInclude.Include.NON_NULL)
    private T result;

    // 요청에 성공한 경우
    public BaseResponse(T result) {
        this.isSuccess = SUCCESS.isSuccess();
        this.message = SUCCESS.getMessage();
        this.code = SUCCESS.getCode();
        this.result = result;
    }

    // 요청에 실패한 경우
    public BaseResponse(BaseResponseStatus status) {
        this.isSuccess = status.isSuccess();
        this.message = status.getMessage();
        this.code = status.getCode();
    }

}

항상 controller에서 이 클래스에 감싸서 반환해주면 된다.

    @PostMapping(value = "/make/post", consumes = {"multipart/form-data"})
    public BaseResponse<ResultLongResp> createPostCommunity(@ModelAttribute CommunityMakeReq reqDto, @AuthenticationPrincipal User user) {
        ResultLongResp result = communityService.createPostCommunity(reqDto, user.getUsername());
        return new BaseResponse<>(result);
    }
profile
Hello World!!

0개의 댓글