20230527 book
- venv와 requirements.txt파일을 사용하여 모두가 동일하게 맞추는 것을 시작
- 장고가 기본적으로 주는 수많은 파일구조 살펴보기?
아래는 영민님이 프젝 위주로 책을 집필하려고 할 때 염두한 유즈케이스 기반 목차이다.
—————필수 API—————
API : 유저 관리
- 회원 가입 API: 새로운 유저를 등록하는 API에 대해 설명하고, 필요한 정보와 요청 방식 등을 소개합니다.
- 로그인 및 인증 API: 유저의 인증과 로그인 절차를 처리하는 API에 대해 설명하고, 효율적인 인증 방법과 보안 관련 주의사항을 언급합니다.
- 프로필 조회 및 수정 API: 유저의 프로필 정보를 조회하고 수정하는 API에 대해 다루며, 필요한 인증 및 권한 관리 방법을 설명합니다.
- 비밀번호 재설정 API: 유저가 비밀번호를 재설정할 수 있는 API에 대해 안내하고, 이를 위한 절차와 보안 사항을 다룹니다.
- 유저 검색 및 필터링 API: 특정 조건에 따라 유저를 검색하고 필터링하는 API를 설명하고, 쿼리 파라미터 등의 활용 방법을 제시합니다.
API : 도서 목록 관리
- 도서 목록 조회 API: 도서 목록을 조회하는 API의 구현 방법과 검색, 정렬, 페이징 등의 기능을 포함한 유용한 옵션에 대해 설명합니다.
- 도서 상세 정보 API: 특정 도서의 상세 정보를 조회하는 API에 대해 다루며, 관련된 데이터와 연결된 다른 리소스에 대한 링크 제공 방법을 소개합니다.
- 도서 추가 및 수정 API: 새로운 도서를 추가하거나 도서 정보를 수정하는 API의 구현 방법과 필요한 데이터 형식에 대해 설명합니다.
- 도서 삭제 API: 도서를 삭제하는 API에 대해 안내하고, 삭제 시 연관된 데이터의 처리 방식과 보안에 대해 언급합니다.
- 도서 추천 및 인기 순위 API(선택): 도서 추천이나 인기 도서 목록을 제공하는 API에 대해 다루며, 추천 알고리즘과 인기 순위를 계산하는 방법을 소개합니다.
API : 재고관리 도서의 재고 상태를 조회하고 관리하는 API를 제공합니다. 사용자가 주문할 때마다 재고가 감소하고, 재고 부족 시 알림을 받을 수 있도록 합니다. API : 주문관리
- 주문 생성: 고객이 상품을 선택하고 주문을 생성하는 기능을 제공합니다.
- 주문 조회: 고객이 자신의 주문 기록을 조회하는 기능을 제공합니다.
- 주문 취소: 고객이 이미 생성한 주문을 취소하는 기능을 제공합니다.
API : 결제 처리
- 결제 요청: 고객이 주문에 대한 결제를 요청하고 결제 수단을 선택하는 기능을 제공합니다.
- 결제 상태 확인: 결제의 성공 여부 및 상태를 확인하는 기능을 제공합니다.
—————선택 API—————
API : 리뷰관리
- 리뷰 작성: 고객이 구매한 상품에 대한 리뷰를 작성하는 기능을 제공합니다.
- 리뷰 조회: 상품에 대한 리뷰를 조회하는 기능을 제공합니다.
API : 장바구니 관리
- 장바구니에 상품 추가: 고객이 상품을 장바구니에 추가하는 기능을 제공합니다.
- 장바구니 조회: 고객이 장바구니에 담긴 상품 목록을 조회하는 기능을 제공합니다.
- 장바구니 수정: 고객이 장바구니에 담긴 상품 수량을 수정하거나 상품을 제거하는 기능을 제공합니다.
API : 배송관리
- 배송 정보 조회: 고객이 주문한 상품의 배송 상태 및 정보를 조회하는 기능을 제공합니다.
- 배송지 변경: 고객이 주문한 상품의 배송지 정보를 변경하는 기능을 제공합니다.
API : 할인 및 쿠폰 관리
- 할인 정보 조회: 현재 진행 중인 할인 정보를 조회하는 기능을 제공합니다.
- 쿠폰 발급 및 사용: 고객에게 쿠폰을 발급하고 쿠폰을 주문에 적용하는 기능을 제공합니다.
나의 생각 및 질문
-
RESTful하기 위해 DELETE메서드를 사용하려면 ajax 사용해야 한다는게 무슨 말인지 모르겠습니다. self-descriptive하기 위함이라는 것 까지만 이해함.
- 예를 들어
DELETE
메서드의 경우, html에 form 태그로 보낼 수 없다. (POST
는 가능함) 그래서 JS 구문이 필요한거고, 이를 비동기적으로 해결해주는 녀석이 바로 ajax인 것. DELETE
를 그럼 왜 쓰냐? 당연히 메서드 이름과 의도를 매치하기 위해서임. 이것이 true self-descriptive
- 예를 들어
-
장고프로젝트를 시작하고 app별로 만들어지는 수많은 파일 (settings.py, view.py...)에 압도당한 기분 ==> 사실 장고 문서 읽으면 해결될 일, 우리가 문서를 읽고 이해하기 쉽게 해석해주는 느낌으로?
-
model.py <-> view.py 소통창구 이해불가
- import가 단데?
-
html <-> view.py 소통창구 이해불가
{% %}
문법이 html 블럭을 넣는다는것까지만 이해했지만, 그 문법과 장고 백엔드가 서로 어디로 이어지는지 모르겠음.{% url 'app:name' %}
은app
앱과 그 안에 있는name
객체(?)를 참조할 수 있음.{% forms.*** %}
하면 어디로 가는거지? 내가forms
를 만들었던가? ==> jinja 구문이 꽤 다양하다. 심지어{{}}
도 있다! 그래서 그쪽 문서도 읽어볼 필요가 있다. 질문 자체에 대한 대답으로는 문법별로 다르다.
Chat GPT API 명세 노션 페이지를 보면서
전체가 js로 이루어지고 있는 프로젝트가 있는데, ajax 사용예시를 보여준다.
ajax는 비동기 통신으로, 비슷한 예로 axios, fetch가 있다. => 한 화면에서 서버에 통신하면 JS에서 불러오는거.
장고의 뷰는 컨트롤러를 겸한다.
취업하면 매일보는게 REST임
카카오에서 로직을 설계해놓으면 우리 서버에 요청하고 리스폰스 할 수 있게 만들어주기 위해서.
그다음으로 할게 DB설계
- [?] DB설계도 REST 안에 있다? 아, CRUD요청이 포함되어 있으니까. DB ⊂ REST인 셈이네
GPT를 면접대비용으로 쓰다니
내가 면접관, GPT가 지원자.
결론
평일에 세팅을 해놓고 주말에 같이 동일한 코드를 봐 가면서 API 설계를 진행해보자.