Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[김승우] sprint4 #71

Merged

Conversation

stevenkim18
Copy link
Collaborator

@stevenkim18 stevenkim18 commented Jan 5, 2025

요구사항

기본

API 문서

상품

  • 상품목록조회
  • 상품등록
  • 상품상세조회
  • 상품수정
  • 상품삭제

게시글

  • 게시글목록조회
  • 게시글등록
  • 게시글상세조회
  • 게시글수정
  • 게시글삭제

멘토에게

  • 에러처리가 잘 되었는지 확인 부탁드립니다.

});

if (!response.ok) {
throw new Error(`HTTP error! status: ${response.status}`);
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

api 요청 시 서버응답으로부터 4xx,5xx 에러를 받을 때 서버에서 어떤 에러인지 에러메시지를 보내주는데, 그 안의 에러메시지를 이용하려면 아래와 같이 수정해볼 수 있겠습니다. 여기서 throw 로 던져진 에러를 받아서 처리하는 곳에서 사용자에게 어떤 이유에서 발생한 에러인지 알려줄 수 있으면 좋겠죠?
const errorData = await response.json();
throw new Error(errorData.message || 에러: ${response.status});

} else {
console.error('Error:', e.message);
}
}
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

서버에서 주는 에러메시지(e.response.data)를 콘솔에 잘 보여주고 있습니다. 그런데 api 함수 정의 부분에서 에러 처리를 바로 하기보다는 api함수는 response.data를 리턴해주는 부분까지만 정의하고, 에러처리는 api 함수를 호출하는 곳 상위레벨(main.js)에서 try/catch로 처리를 해주시는 것이 보다 권장되는 패턴입니다. 여러가지 api 함수호출 해야하는 경우 에러처리를 한번에 모아서 처리할 수도 있어 에러핸들링 코드에 대한 재사용성도 좋아집니다.


// 상품 목록 조회
// const productList = await productAPI.getProductList({pageSize: 10});
// console.log(productList);
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

왜 주석처리 해두셨을까요? product 에 대한 api 호출 코드만 있고 article api 호출 코드는 보이지 않습니다.
api 함수를 호출하는 코드 내에서 try/catch 문으로 에러 핸들링을 해주시는 것을 권장 드립니다. 에러 핸들링 코드를 재사용하여 더 적은 코드로 한번에 에러처리가 가능해지고 깔끔한 느낌을 줍니다.

// 상품 등록
async createProduct(data) {
try {
const response = await apiService.post('/products', data);
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

data 를 post 메소드의 인자로 넘기기 전에 데이터타입을 점검하는 유효성검사가 필요합니다.

@rjc1704
Copy link
Collaborator

rjc1704 commented Jan 6, 2025

fetch와 axios 로 각각 api 함수를 잘 작성해주셨습니다. 에러핸들링은 가급적 api 함수를 호출하는 상위 모듈에서 try/catch로 해보는 것을 권장 드립니다. 추후에 UI와 API를 통합해서 꼼꼼하게 테스트하게 되면 자연스럽게 어떤 패턴이 코드 재사용성을 높일 수있는 지에 대해 알게 되는 부분들이 많답니다. 고생하셨습니다.

@rjc1704 rjc1704 merged commit aa1d159 into codeit-sprint-fullstack:basic-김승우 Jan 6, 2025
1 check passed
@stevenkim18
Copy link
Collaborator Author

앗!! 꼼꼼한 리뷰 감사합니다!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants