[7] 우아한 인터페이스 반환을 위한 패키지된 Response
11484 단어 혁신적 실천
설계의 반환 형식은 다음과 같습니다.
{
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, " ");
}
이 봉인을 통해 소식을 되돌릴 때 훨씬 간단해졌다