class, constructor, 상속, 다형성 등 OOP 개념을 직접 코드에 적용
외부 API와 연동해 데이터 CRUD 구현
fetch와 axios를 사용한 비동기 통신 + 에러 처리 훈련
코드를 기능 단위로 나누어 파일로 구조화하고 export/import 연습
Product 클래스
프로퍼티: name, description, price, tags, images, favoriteCount
기능: .favorite() 메서드를 호출하면 favoriteCount가 +1 증가
ElectronicProduct 클래스
Product 클래스를 상속받고, manufacturer(제조사) 프로퍼티 추가Article 클래스
프로퍼티: title, content, writer, likeCount, createdAt
기능: .like() 메서드를 호출하면 likeCount가 +1 증가
생성 시점에 createdAt에 현재 시간이 자동 저장됨
각 클래스마다 constructor를 작성하고, 캡슐화와 상속 구조를 잘 반영했어요.
Article API
getArticleList: GET 방식, page, pageSize, keyword 사용 가능
getArticle: 개별 게시글 조회
createArticle: 게시글 등록 (title, content, image 포함)
patchArticle: 게시글 수정
deleteArticle: 게시글 삭제
Product API
getProductList: GET 방식, page, pageSize, keyword 지원
getProduct: 개별 상품 조회
createProduct: 상품 등록 (name, description, price, tags, images 포함)
patchProduct: 상품 수정
deleteProduct: 상품 삭제
axios 혹은 fetch 사용
.then() & .catch() 기반 비동기 처리 방식 연습
async/await + try/catch 방식도 병행해 사용
응답 코드가 200대(2XX)가 아닐 경우, 콘솔에 에러 메시지 출력
getProductList()로 받아온 상품 데이터를 바탕으로
tags 배열에 "전자제품"이 포함된 상품은 ElectronicProduct 클래스로 인스턴스 생성
그 외 상품은 기본 Product 클래스를 사용
이렇게 만든 인스턴스를 products 배열에 저장
ProductService.js: 상품 관련 API 함수들 정의
ArticleService.js: 게시글 관련 API 함수들 정의
main.js: 실제 실행 코드 작성
SPRINT2/
├── main.js # 앱 초기 실행 파일
├── Product.js # 상품 클래스 정의
├── ElectronicProduct.js # 전자제품 상품 클래스 (Product 상속)
├── ProductService.js # 상품 관련 API 함수 정의
├── Article.js # 게시글 클래스 정의
├── ArticleService.js # 게시글 관련 API 함수 정의
├── package.json
└── package-lock.json
의존성 설치
npm install
실행 (nodemon 기반 자동 재실행)
npm run dev
결과 확인: 콘솔 로그로 클래스 인스턴스 및 API 결과 확인
import/export 기반 모듈 설계#field, getter)fetch 기반 비동기 API 통신 구조화
