DRF
장고 REST 프레임워크
Django 기반의 웹 프레임워크
RESTful API 구축을 위한 도구
순수한 장고는 MVC(모델-뷰-컨트롤러) 아키텍처를 기반으로
백엔드 논리 및 데이터 처리를 처리하도록 설계됨
프론트엔드/백엔드 분리!
백엔드는 데이터 부분만 처리하고 json 형식으로 보냅니다.
웹 브라우저 흐름
- DNS(Domain Name System) 조회
- HTTP 요청 메시지 생성
- 소켓 라이브러리를 통한 전달
- TCP/IP가 생성되고 그 안에 HTTP 메시지가 포함됩니다.
프로토콜 계층
애플리케이션 → 소켓 라이브러리 → TCP → IP → LAN → 인터넷
인터넷 프로토콜
- 지정된 IP 주소로 전송
- 쓰기 소스 IP 및 대상 IP
- 전송되면 노드를 통해 전송됩니다.
- 받을 수 없는 경우가 있습니다
- 중간 또는 순서를 벗어난 패킷 손실
TCP
- TCP로 IP 보완
- 소스 포트 및 대상 포트 정보
- 전송 제어 및 주문
- 확인 정보 등
- 연결 지향 TCP 3방향 악수
UDP
사용자 데이터그램 프로토콜
TCP 기능 없음
IP와 유사하게 포트와 체크섬만 추가하면 됩니다.
포트
항구
URI (Uniform Resource Identifier): 자원 식별
URL
항아리
포트는 동일한 IP 내에서 프로세스를 식별할 수 있습니다.
포트 생략 http 80 https 443
http는 기존의 방식이고 이를 보완하는 https가 더 안전한 방식입니다.
HTTP
하이퍼 텍스트 전송 프로토콜
원래는 HTML을 전송하기 위한 것이었지만 이제 모든 형식을 전송합니다.
클라이언트 서버 구조
클라이언트 요구보내다 응답기다립니다
상태 비저장( 상태 저장)
세션이 종료될 때까지 클라이언트 세션 정보를 저장하지 않음
상태 비저장으로 응답 서버를 쉽게 변경할 수 있습니다.
세션 로그인은 상태 저장입니다. 최소 사용의 개념
단절
keep-alive 없음 및 최소한의 리소스 사용
HTTP는 기본적으로 연결을 활성 상태로 유지하지 않습니다.
몇 초 이내의 빠른 응답
HTTP 메시지
요청 메시지와 응답 메시지가 다릅니다.

중요한 것은 리소스 식별입니다.
자원
멤버십의 개념. 이것은 URI에 매핑되고
당신이하는 일은 방법입니다
편안한 API
자원과 행동의 분리
- 리소스: 멤버십
- 조치 : 조회, 등록, 삭제, 변경
방법의 종류
- 얻다 : 확인하다
데이터 쿼리 문자열패스
- 우편 : 등록
메시지 본문을 통해 서버에 요청 데이터 전달
데이터 처리
프로세스 처리
새 리소스를 만들 수 없습니다.
검색 데이터를 JSON으로 전달하고 싶지만 GET 방식을 사용하기 어려운 경우
- 놓다 : 대체 또는 생성
파일을 붙여넣는 것과 동일합니다. 없는 경우 새로 만들고 덮어씁니다.
POST와의 차이점: PUT은 URI를 지정하는 클라이언트에서 전송됩니다.
- 반점 : 부품 변경
- 머리 : GET과 동일하나 상태 표시줄과 헤더만 반환
https://developer.mozilla.org/en-US/docs/Web/HTTP/Methods
HTTP 요청 방법 – HTTP | MDN
HTTP는 주어진 리소스에 대해 수행할 원하는 작업을 나타내는 일련의 요청 메서드를 정의합니다. 명사일 수도 있지만 이러한 요청 메서드를 HTTP 동사라고도 합니다. 그들 각각은 다른 의미 체계를 구현하지만 일부
developer.mozilla.org
데이터 전송
- 쿼리 매개변수: GET(검색, 정렬 필터)
- 메시지 본문: POST, PUT, PATCH(회원가입, 상품주문, 자원등록변경)
HTML 양식 : GET, 포스트지원만
콘텐츠 유형: application/x-www-form-urlencoded
콘텐츠 유형: multipart/form-data
HTTP API : 게시, 게시, 패치데이터는 메시지 본문으로 보낼 수도 있습니다.
서버 대 서버, 앱 클라이언트, 웹 클라이언트(ajax)
콘텐츠 유형: 애플리케이션/json
API 설계 예
회원 관리 – 수집 기반
- GET /members : 멤버 목록
- POST /회원 : 회원가입
- GET /members/{id} : 구성원 조회
- PATCH,PUT,POST /members/{id} : 멤버 수정
- DELETE /members/{id} : 구성원 삭제
HTTP 헤더
많은 종류
필드명(키)대소문자를 구분하지 않습니다
콘텐츠 유형 = 콘텐츠 유형
표현식 헤더
리소스에 대한 정보입니다. (html, xml, json)
콘텐츠 유형: 형식
- 텍스트/html; 문자셋-utf-8
- 애플리케이션/json
- 이미지/png
https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers
HTTP 헤더 – HTTP | MDN
HTTP 헤더를 사용하면 클라이언트와 서버가 HTTP 요청 또는 응답과 함께 추가 정보를 전달할 수 있습니다. HTTP 헤더는 대소문자를 구분하지 않는 이름, 콜론(:), 값 순으로 구성됩니다. 값 앞의 공백은 무시됩니다.
developer.mozilla.org
공식 문서 읽기
https://mypy.readthedocs.io/en/stable/
mypy 1.2.0 문서
다음 시작하기
mypy.readthedocs.io
https://black.readthedocs.io/en/stable/#
블랙 23.3.0 문서
다음 블랙 코드 스타일
black.readthedocs.io
https://django-ninja.rest-framework.com/
장고 닌자
Django Ninja – 빠른 Django REST 프레임워크 Django Ninja는 Django 및 Python 3.6+ 유형 힌트로 API를 구축하기 위한 웹 프레임워크입니다. 주요 기능: 간편함: 사용하기 쉽고 직관적으로 설계되었습니다. 빠른 실행: Pydantic 및
django-ninja.rest-framework.com
Django를 배포할 때 runserver를 사용할 수 있습니까?
wsgi를 사용하는 이유
“왜 uwsgi를 쓰느냐”는 질문에 “파이썬에서 통신용으로 지정된 인터페이스다”라고 답했지만… 개인적으로 답변이 충분하지 않은 것 같아서 이 글을 쓰게 되었습니다.
uiandwe.tistory.com
