Closed jjangsky closed 3 months ago
@openmpy 쉬는 주말에도 빠른 리뷰 감사드립니다 👍 GPT보다 더 정확한 코드리뷰에 감탄을 했습니다 😃
피드백 주신 부분에 대해서 빠른 시일내로 수정하여 커밋하겠습니다~!
@jjangsky 님~ 갑자기 의문이 들어서 코멘트 하나 남겨봅니다. 혹시 공통 response 의 의도는 무엇일까요? httpStatus 는 header 로 넘긴다 치고.. message 에는 어떤 내용들이 들어가나요? data 에는 반환 값이 들어가는건가요?
@openmpy message 필드에 대해서는 아직까지는 사용 계획은 없으나 추후 서버에서 사용자로부터 반환해야 할 message 정도를 넣기 위한 필드로 계획하여 작성하였습니다.
public RestResponse(Object resultData, String message) {
super(HttpResponse.builder()
.httpStatus(HttpStatus.OK.value())
.message(message)
.data(resultData)
.build(), headers, HttpStatus.OK);
}
이러한 형식으로도 사용이 가능할 것 같구여 지금은 단순하게 "OK" 라는 문자열만 임의로 넣어 놓은 형태입니다. 사용 계획이 없을것 같으면 지워도 문제가 없는 필드입니다 !
공통 Response의 의도는 단순하게 Controller 계층에서 ResponseDto Class를 조금 더 간편하게 반환하기 위한 의도이지 이게 기능적이나 성능적으로는 크게 의미가 있는 Class 자체는 아닙니다.
Data 필드에는 조회된 데이터나 필요하다면 등록이나 수정 작업 후 변경된 데이터를 등록하는 필드로 넣어놓았습니다.
@openmpy
message 필드에 대해서는 아직까지는 사용 계획은 없으나
추후 서버에서 사용자로부터 반환해야 할 message 정도를 넣기 위한 필드로 계획하여 작성하였습니다.
public RestResponse(Object resultData, String message) { super(HttpResponse.builder() .httpStatus(HttpStatus.OK.value()) .message(message) .data(resultData) .build(), headers, HttpStatus.OK); }
이러한 형식으로도 사용이 가능할 것 같구여
지금은 단순하게 "OK" 라는 문자열만 임의로 넣어 놓은 형태입니다.
사용 계획이 없을것 같으면 지워도 문제가 없는 필드입니다 !
공통 Response의 의도는 단순하게 Controller 계층에서 ResponseDto Class를 조금 더
간편하게 반환하기 위한 의도이지 이게 기능적이나 성능적으로는 크게 의미가 있는 Class 자체는 아닙니다.
Data 필드에는 조회된 데이터나 필요하다면 등록이나 수정 작업 후 변경된 데이터를 등록하는 필드로
넣어놓았습니다.
@jjangsky 님 디테일한 답변 감사합니다. message 에 대한 부분에서 의문이 좀 생겼었는데 해결 됐습니다. 혹시 현업 단계에선 어떤 식으로 공통 reaponse 값을 내려주나요? 예를 들어 어떤 필드들이 있으며 등등..
@openmpy 현업이라 하기에는 많이 부족하지만 저같은 경우에는 data 필드만 넘기고 있습니다. 그 외에도 ResponseClass에 정의한 message, status 필드 이렇게 3개 넘기고 있었지만 사실 사용하는것은 data필드만 받아서 사용하고 있습니다.
// 3. 응답 처리
if (response) {
if (response.status === 200) {
// 모든 API 응답에 대해 token이 존재하는 경우 토큰을 갱신한다.
// refresh 하는 경우도 있기 때문
// jwt token 확인
let token = comm.jwt.getTokenFromHeader(response.headers);
if (token) {
// set token
comm.jwt.setToken(token);
}
// 3.1 정상 응답
if (callback) {
// json 이 아닌 경우도 존재함
// response header 에서 content-type 을 확인해서
// json인 경우 에만 json 으로 변환하여 callback
const contentType = response.headers.get('Content-Type');
const disposition = response.headers.get('Content-Disposition');
if(contentType && contentType.indexOf('application/json') !== -1){
const json = await response.json();
callback(json);
}
// blob 인 경우
else if (contentType && comm.api.isBlobType(contentType))
{
const blob = await response.blob();
callback(blob, disposition);
}
else
{
const resultData = await response.text();
callback(resultData,disposition);
}
}
} else {
// 3.2 에러 응답
if (comm.api._defaultHttpErrorHandle) {
/**
* @Reference : comm.api._defaultHttpErrorHandle
* */
const result = await response.json();
//comm.api.httpErrorHandle(response, result, errorCallBack);
// link 따라가기가 힘들어서 직접호출로 변경
await comm.api._defaultHttpErrorHandle(response, result, errorCallBack);
} else {
comm.msg.alert('알 수 없는 오류가 발생 했습니다.');
}
}
}
공통 JS 파일이 있어서 따로 뭐가 넘어오는지 신경 안쓰고 있었는데 보니까 헤더에서 추출한 status는 200 제외하고 다 에러로 처리하고 있네용
다음주 금요일에 회사 프론트 분들 접할 기회가 있어서 반환값에 대해서 한번 여쭤보겠습니다.
@openmpy 현업이라 하기에는 많이 부족하지만 저같은 경우에는 data 필드만 넘기고 있습니다.
그 외에도 ResponseClass에 정의한 message, status 필드 이렇게 3개 넘기고 있었지만 사실 사용하는것은 data필드만 받아서
사용하고 있습니다.
// 3. 응답 처리 if (response) { if (response.status === 200) { // 모든 API 응답에 대해 token이 존재하는 경우 토큰을 갱신한다. // refresh 하는 경우도 있기 때문 // jwt token 확인 let token = comm.jwt.getTokenFromHeader(response.headers); if (token) { // set token comm.jwt.setToken(token); } // 3.1 정상 응답 if (callback) { // json 이 아닌 경우도 존재함 // response header 에서 content-type 을 확인해서 // json인 경우 에만 json 으로 변환하여 callback const contentType = response.headers.get('Content-Type'); const disposition = response.headers.get('Content-Disposition'); if(contentType && contentType.indexOf('application/json') !== -1){ const json = await response.json(); callback(json); } // blob 인 경우 else if (contentType && comm.api.isBlobType(contentType)) { const blob = await response.blob(); callback(blob, disposition); } else { const resultData = await response.text(); callback(resultData,disposition); } } } else { // 3.2 에러 응답 if (comm.api._defaultHttpErrorHandle) { /** * @Reference : comm.api._defaultHttpErrorHandle * */ const result = await response.json(); //comm.api.httpErrorHandle(response, result, errorCallBack); // link 따라가기가 힘들어서 직접호출로 변경 await comm.api._defaultHttpErrorHandle(response, result, errorCallBack); } else { comm.msg.alert('알 수 없는 오류가 발생 했습니다.'); } } }
공통 JS 파일이 있어서 따로 뭐가 넘어오는지 신경 안쓰고 있었는데
보니까 헤더에서 추출한 status는 200 제외하고 다 에러로 처리하고 있네용
다음주 금요일에 회사 프론트 분들 접할 기회가 있어서 반환값에 대해서 한번 여쭤보겠습니다.
@jjangsky 님 확인 했습니다. 감사합니다 ~ 👍
@openmpy
PR Merge 처리 하겠습니다~
피드백 주신 MethodArgumentNotValidException
관련 예외처리는
해당 PR과 목적이 달라서 따로 이슈로 등록하고 처리하겠습니다 👍
관련 이슈
16
변경 사항
체크 목록