# 2021.10.14 PR 기록 # 작업 목록 - OrderView 및 ProductListView에 필요한 API 구현 - OrderView 구현 - 특정 카테고리의 Product를 보여주는 ProductListView 구현 # 수정할 사항 - 카테고리별 API 요청 함수 통합 - 기존 음료 정보를 가져오는 API 요청 함수는 음료의 종류별로 다 분리가 되어있었음 - 음료별로 API주소가 다 다르다보니 함수도 다 별도로 분리하게 되었음 - API url에서 공통적인 부분을 발견하게 되어서 음료 정보를 가져오는 하나의 함수를 만들어보기로 함 - OrderViewUsecase를 Protocol 기반으로 변형 - 의존성 역전을 위해 추상화 - HomeUseCase에서 ProductAccessable을 빼내기 - 공통 사용이 가능한 프로토콜이므로 독립시킴 - HomeView에서 사용하는 DataSource에 DispatchGroup 적용 - 데이터 순서 유지 - 필요할 때 1번만 DataSource를 갱신 # 질문 및 고민 - 조건에 따라서 이벤트 관련 화면을 보여주거나, 홈 화면을 보여주어야합니다. 이때, 어떠한 방식으로 구현하는 방식이 주로 쓰이는지 궁금합니다. 1. 홈화면을 시작 vc로 두고 viewDidLoad에서 조건을 체크하여 present로 이벤트화면을 출력한다. - 장점 : 이벤트 화면을 dismiss하면 바로 사라짐(불필요하게 뒤에 깔리는 vc가 없음) - 단점 : 앱을 시작할 때, 기기의 성능에 따라서 홈화면이 잠깐 노출되고 그 위에 이벤트화면이 뜨는 경우가 있다. 2. 앱이 실행 될 때 rootVC를 이벤트 화면으로 할지, 홈 화면으로 할지를 ScenDelegate 단에서 체크한다. - 장점 : 앱 시작 과정이 깔끔하다. 사용자가 입장에서 거슬리는 점이 없다. - 단점 : 이벤트 화면이 표시되고나서 사용자가 닫기를 누르면 home vc를 present하기 때문에 이벤트 vc가 앱 구동 중에 항상 깔려있다. 요구사항에 있는 홈화면에서 적힌 모든 API목록 https://api.codesquad.kr/starbuckst https://www.starbucks.co.kr/whats_new/getIngList.do - 이벤트 종류할때? 헤더에 데이터를 넣고 보내서 사용하는듯 - MENU_CD의 값으로 이걸 요청하면, - 화면 순서 - 추천 메뉴(콜렉션뷰) - https://api.codesquad.kr/starbuckst 를 사용한다 - 메인 이벤트(스택뷰) - 이벤트종류(콜렉션뷰) - 인기 메뉴(콜렉션뷰) - Home 진입 - https://api.codesquad.kr/starbuckst ``` { "display-name": "딸기HARRY", "your-recommand": { "products": [ "9200000002760", "168010", "9200000002502", "9300000003072" ] }, "main-event": { "img_UPLOAD_PATH": "https://image.istarbucks.co.kr", "mob_THUM": "APP_THUM_20210719090612417.jpg" }, "now-recommand": { "products": [ "106509", "9200000000479", "9200000000433", "9200000002760", "9200000002487" ] } } ``` - 추천 메뉴 목록 - HomeJSON/your-recommand/products 배열값 - 메뉴별 요청 API - https://www.starbucks.co.kr/menu/productViewAjax.do - body - form-data - product_cd = {배열값} ``` { "view": { "content": "부드러운 목넘김의 나이트로 커피와 바닐라 크림의 매력을 한번에 느껴보세요!", "product_ENGNM": "Nitro Vanilla Cream", "product_CD": "9200000002487", "product_NM": "나이트로 바닐라 크림", "cate_NAME": "콜드 브루", "recommend": "부드러운 목넘김의 나이트로 커피와 바닐라 크림의 매력을 한번에 느껴보세요!", "kcal": "75", // 칼로리 "fat": "2.7", // 지방 "price": "", "standard": "12", "unit": "oz", "sat_FAT": "2", //포화지방 "trans_FAT": "0", // 트랜스지방 "cholesterol": "5", // 콜레스테롤 "sugars": "10", // 당류 "chabo": "10", // ? "protein": "1", // 단백질 "sodium": "20", // 나트륨 "caffeine": "245", // 카페인 "allergy": "우유" } } ``` - 메인 이벤트 - 모든 이벤트 가져오기 - https://www.starbucks.co.kr/whats_new/getIngList.do - header - Content-Type = application/x-www-form-urlencoded - charset = utf-8 - body - form-data - menu_cd = all - HomeJSON/main-event 값이랑 동일한 이미지 선택 - 대표 이벤트 사진 - https://image.istarbucks.co.kr/upload/promotion/{mob_THUM} - 대표 이벤트 내용 표시 ``` { "list": [ { "img_UPLOAD_PATH": "https://image.istarbucks.co.kr", "title": "할로윈 음료 Tri-Star Dash 이벤트", "start_DT": "2021-10-11", "end_DT": "2021-10-18", "view_DATE": "2021-10-12 ~ 2021-10-18", "mob_THUM": "APP_THUM_20211007091038328.jpg", "sbtitle_NAME": "할로윈 음료 Tri-Star Dash 이벤트" } ] } ``` - 시간별 추천 메뉴 목록 - 메뉴별 요청 API - https://www.starbucks.co.kr/menu/productViewAjax.do - body - form-data - product_cd = {배열값}