상품 공급 시스템 - 회원 관련 기능 구현

테이블 생성

테이블 설계

디렉토리 구조

디렉토리 구조

클래스 생성

ResponseStatus

package com.example.tranche.global.common.response;

public enum ResponseStatus {

    SUCCESS(1000, "OK"),
    USABLE_NICKANME(1001, "사용 가능한 닉네임입니다."),
    NICKNAME_ALREADY_EXISTS(1003, "이미 존재하는 닉네임입니다."),

    EMAIL_ALREADY_EXISTS(2001, "이미 존재하는 이메일입니다.");


    private int code;
    private String description;

    private ResponseStatus(int code, String description) {
        this.code = code;
        this.description = description;
    }

    public int getCode() { return code; }
    public String getDescription() { return description; }
}

요청의 결과를 표현하는 enum 객체이다.

  • code - 요청에 대한 응답을 숫자로 표현한 것이다.
  • description - 개발자의 이해를 돕기 위한 간단한 설명이다.

BaseResponse

package com.example.tranche.global.common.response;

import com.fasterxml.jackson.annotation.JsonInclude;

import static com.example.tranche.global.common.response.ResponseStatus.SUCCESS;

public class BaseResponse<T> {

    private final int code;
    private final String description;
    @JsonInclude(JsonInclude.Include.NON_NULL)
    private final T data;

    public int getCode() { return code; }
    public String getDescription() { return description; }
    public T getData() { return data; }

    /**
     * 정보를 요청한 경우
     * @param data
     */
    public BaseResponse(T data) {
        this.code = SUCCESS.getCode();
        this.description = SUCCESS.getDescription();
        this.data = data;
    }

    /**
     * 응답이 예/아니오/오류 인 경우
     * @param status
     */
    public BaseResponse(ResponseStatus status) {
        this.code = status.getCode();
        this.description = status.getDescription();
        this.data = null;
    }
}

응답에는 두 가지 경우가 있다. 첫 번째는 예/아니오/오류 와 같이 간단한 경우이고 두 번째는 정보를 전달해줘야 하는 경우이다.
예컨데 특정 닉네임을 사용할 수 있는지에 대해 요청하는 경우가 첫 번째에 해당되고 특정 상품의 정보에 대해 요청하는 경우가 두 번째에 해당된다.

reference

Comments