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 #69

Conversation

hay-oon
Copy link
Collaborator

@hay-oon hay-oon commented Jan 5, 2025

요구사항

기본

  • 'https://sprint-mission-api.vercel.app/articles' API를 이용하여 아래 함수들을 구현해 주세요.

  • getArticleList() : GET 메서드를 사용해 주세요.

  • page, pageSize, keyword 쿼리 파라미터를 이용해 주세요.

  • getArticle() : GET 메서드를 사용해 주세요.

  • createArticle() : POST 메서드를 사용해 주세요.

  • request body에 title, content, image 를 포함해 주세요.

  • patchArticle() : PATCH 메서드를 사용해 주세요.

  • deleteArticle() : DELETE 메서드를 사용해 주세요.

  • fetch 혹은 axios 를 이용해 주세요.

  • 응답의 상태 코드가 2XX가 아닐 경우, 에러메시지를 콘솔에 출력해 주세요.

  • .then() 메서드를 이용하여 비동기 처리를 해주세요.

  • .catch() 를 이용하여 오류 처리를 해주세요.

  • 'https://sprint-mission-api.vercel.app/products' API를 이용하여 아래 함수들을 구현해 주세요

  • getProductList() : GET 메서드를 사용해 주세요.

  • page, pageSize, keyword 쿼리 파라미터를 이용해 주세요.

  • getProduct() : GET 메서드를 사용해 주세요.

  • createProduct() : POST 메서드를 사용해 주세요.

  • request body에 name, description, price, tags, images 를 포함해 주세요.

  • patchProduct() : PATCH 메서드를 사용해 주세요.

  • deleteProduct() : DELETE 메서드를 사용해 주세요.

  • async/await 을 이용하여 비동기 처리를 해주세요.

  • try/catch 를 이용하여 오류 처리를 해주세요.

  • 구현한 함수들을 아래와 같이 파일을 분리해 주세요.

  • export를 활용해 주세요.

  • ProductService.js 파일 Product API 관련 함수들을 작성해 주세요.

  • ArticleService.js 파일에 Article API 관련 함수들을 작성해 주세요.

  • 이외의 코드들은 모두 main.js 파일에 작성해 주세요.

  • import를 활용해 주세요.

  • 각 함수를 실행하는 코드를 작성하고, 제대로 동작하는지 확인해 주세요.

주요 변경사항

  • articleService: axios, then chaining, catch 활용
  • productService: axios(interceptor), async/await, try/catch 활용

멘토에게

  • 셀프 코드 리뷰를 통해 질문 이어나가겠습니다.

@hay-oon hay-oon requested a review from junguksim January 5, 2025 11:56
@hay-oon hay-oon changed the title Basic 정하윤 sprint4 [정하윤] sprint4 Jan 5, 2025
Copy link
Collaborator

@junguksim junguksim left a comment

Choose a reason for hiding this comment

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

전반적으로 잘 짜주셨습니다!
비동기 함수 간의 순서 보장에 대해 코멘트 남겨뒀습니다.

const newArticle = await createArticle(postArticleData);
console.log("createArticle:", newArticle);

const updatedArticle = await patchArticle(newArticle.id, {
Copy link
Collaborator

Choose a reason for hiding this comment

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

async 밖에서 await 을 쓰는건 아무 의미가 없습니다!
newArticle 은 이러면 pending 중인 Promise 객체일 뿐이고, id 에 접근할 수 없습니다.

(async () => {
  const newArticle = await createArticle(postArticleData);
  console.log("createArticle:", newArticle);

  const updatedArticle = await patchArticle(newArticle.id, {
    title: "[**급구**] 에어팟 오른쪽 한짝만 삽니다",
    content: "평일 역삼역 직거래 가능",
  });
  console.log("patchArticle:", updatedArticle);
})();

이런 식으로 IIFE 를 활용해서 순서를 보장하며 실행할 수 있습니다.

Copy link
Collaborator Author

@hay-oon hay-oon Jan 8, 2025

Choose a reason for hiding this comment

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

리뷰 감사합니다. �제출 당시에 작성한 코드는 최종적으로 정상적으로 동작이 되는것을 확인하고 제출하였습니다. 그래서 다시 확인해보니 해당 함수는 정상적으로 동작하는 것을 확인하였고, 알아보니 Node.js 14.8.0 버전 이상부터는 최상위 레벨에서 await만 사용이 가능하다고 하네요. (Top-level await) 덕분에 다시 공부하고 숙지하게되었습니다 감사합니다.

@junguksim junguksim merged commit 8ec562f into codeit-sprint-fullstack:basic-정하윤 Jan 7, 2025
1 check passed
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