{% raw %}
- venv와 requirements.txt파일을 사용하여 모두가 동일하게 맞추는 것을 시작
- 장고가 기본적으로 주는 수많은 파일구조 살펴보기?
- 프로젝트 안에 앱이 있고 거기에 settings.py가 있다.
- urls.py 안에 모든 path에 대한 내용이 담겨있다.
- view.py 안에
- 라우팅 콜백함수 안에 인자를 추가할 수도 있다.
아래는 영민님이 프젝 위주로 책을 집필하려고 할 때 염두한 유즈케이스 기반 목차이다.
—————필수 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 설계를 진행해보자.
{% endraw %}