[SPRING_입문]/개발일지

[4주차] 개발일지 (4-2) My Select Shop Application [API Concept]

Code_Otaku 2022. 6. 25. 23:09

 

[4주차] 개발일지 (4-1) 나만의 셀렉샵 만들기!

 

[4주차] 개발일지 (4-1) 나만의 셀렉샵 만들기!

안녕! 안녕! 이번 시간에도 토이 프로젝트 하나를 가지고 와봤다. http://spring.spartacodingclub.kr/ 00만의 셀렉샵 관심상품을 선택하고, 최저가 알림을 확인해보세요! spring.spartacodingclub.kr 요런 식으로..

codeotaku.tistory.com

이런 식으로 구현되는 어플리케이션을 만들어본다고 했다.

 

사실 코딩보다 더 중요한 부분이 바로 코딩 전 단계인 API 설계다.

필자도 마찬가지이지만 그런 지루한 과정보다 코딩이 더 재밌기 때문에

간단한 프로젝트는 머리속으로 컨셉만 잡고 코딩부터 시작하기가 쉽다.

 

하지만 초기 컨셉 디자인을 대충 설계 했다가..

나중에 가서 치명적인 오류가 발생해 프로젝트를 처음부터 다시 시작해야 하는 불상사가 발생한다면..?

생각만 해도 끔찍하다.

여러명이서 협업하는 과업은 말할 것도 없다.

납기일마저 촉박한다면 아무리 소스코드를 깃-허브에 백업 시켜놨더라도..

서비스의 퀄리티는 기대하기 힘들 것이다.

필자는 잘 모르지만 현업에서도 심심찮게 일어나는 사고가 아니겠는가?

어느 분야에서든 설계사고는 그야말로 목숨이 간당간당한 대참사다..

 

서론을 이렇게 주저리 주저리 늘어뜨린 만큼 사소한 부분부터 놓치지 말고 API를 설계해보자.

JSON 형식으로 주고받는 API는 더도, 덜도 말고 GET / POST / PUT / DELETE 가 핵심이다.

저 네 가지 기능을 머리속에 박아두고 하나씩 밑그림을 그려나가면 될 것이다.

 

그렇다면 이번에 만들기로 한 My Select Shop Application에는 어떠한 기능들이 필요할까?

차근 차근 정리해보자.

 

  1. 키워드로 상품 검색, 결과를 목록 (List)로 보여줘야 한다. [GET]
  2. 관심 상품을 등록한다. [POST]
  3. 관심 상품을 조회한다. [GET]
  4. 관심 상품의 원하는 최저가를 등록, 하한가보다 낮은 경우를 따로 표시할 것! [PUT]

한 눈에 보기 좋게 테이블로 만들어보자.

Function Method URL Return Type
키워드로 상품 검색

목록 조회
GET /api/search?query=Item List<ItemDto>
관심상품 등록 POST /api/products Product
관심 상품 조회 GET /api/products List<Product>
관심상품의 최저가 등록

하한가보다 낮은 경우 표시
PUT /api/products/{id} id

다음 API를 기반으로 서비스를 작동시키기 위한 서버단을 3Layer로 설계해보자.

 

  • Controller
  •  ProductRestController.java: 관심 상품 관련 REST Controller
  • SearchRequestController.java: 검색 관련 REST Controller
  • Service
  • ProductService.java: 관심 상품 가격 변경
  • Repository
  • Product.java: 관심 상품 목록 관련 Table
  • ProductRepository.java: 관심상품 조회 / 저장
  • ProductRequestDto.java: 관심 상품 등록
  • ProductMyPriceRequestDto.java: 관심 상품 가격 변경
  • ItemDto.java: 검색 결과 요청 / 응답

 

이 정도면 글의 취지에 부합하는 것 같다.

다음 시간부터는 3Layer의 부속기능부터 차례대로 구현해보도록 하겠다.

그리고 프로젝트를 다 완성하면 이번에도 변태같이 코드리뷰를 할 것이다.

그럼 이만.. 수구