[7] 우아한 인터페이스 반환을 위한 패키지된 Response

11484 단어 혁신적 실천
인터페이스를 설계할 때 전단에 중간층이 특별히 반환 코드와 반환 메시지를 처리해야 한다는 것을 감안하여 백엔드에서 특별히 Response의 Bean을 설계하여 봉인하고 이Response를 통해 되돌아오는 내용 형식을 규범화한다.
설계의 반환 형식은 다음과 같습니다.
{
	code: 200,
	msg: "    ",
	data: Object
}

이루어지다
리스폰스빈 준비.
/**
 * Response  json  :
 * { code: 200, msg: "    ", data: Object }
 */
@Data
@Builder
public class Response {
    private int code;
    private String msg;
    private Object data;

@Builder 주석을 통해 직렬 구조 방법을 사용하면 비교적 쉽게 Response를 구성할 수 있습니다
사용자 로그인을 예로 들면, 돌아올 때:
if (user != null && username.equals(user.getName())) {
   if (user.getPassword().equals(password)) {
       String token = authService.login(username, password);
       return Response.builder()
               .code(200)
               .msg("    ")
               .data(new LoginPayload(token, user))
               .build();
   } else {
       return Response.builder()
               .code(502)
               .msg("    ")
               .build();
   }
} else {
   return Response.builder()
           .code(502)
           .msg("    ")
           .code(506)
           .msg("     ")
           .build();
}

최적화
실제 인터페이스를 쓸 때 @Builder 주석을 사용하는 것이 프로필이 부족한 것을 발견했고 대부분의 요청이 실행에 성공한 경우를 감안하여 실행에 성공한 코드가 200이기 때문에 실행에 성공했을 때 msg와 데이터의 내용을 전송하기만 하면 된다.
실행에 실패하면 데이터도 존재하지 않습니다. 코드와 msg만 전송하면 됩니다.
그래서 한층 더 봉인하여 success와 error 두 가지 방법을 증가시켰다
    public static Response error(int code, String msg) {
        return Response.builder()
                .code(code)
                .msg(msg)
                .build();
    }

    public static Response success(String msg, Object data) {
        return Response.builder()
                .code(200)
                .msg(msg)
                .data(data)
                .build();
    }

이렇게 하면 한 줄만 쓸 수 있어요.
if (user.getPassword().equals(password)) {
    String token = authService.login(username, password);
    return Response.success("    ", new LoginPayload(token, user));
} else {
    return Response(502, "    ");
}

이 봉인을 통해 소식을 되돌릴 때 훨씬 간단해졌다

좋은 웹페이지 즐겨찾기