본문 바로가기

카테고리 없음

2023 04 18 장고 심화 1주차

DRF


DRF는 Django 프레임워크를 사용하여 RESTful API를 구축하기 위한 인기 있는 웹 프레임워크인 Django Rest Framework의 약자입니다. Django를 기반으로 구축되었으며 빠르고 쉽게 API를 구축할 수 있는 많은 강력한 도구와 기능을 제공합니다.

DRF는 표준 Django 모델-뷰-컨트롤러(MVC) 아키텍처를 사용하며 유연하고 사용자 지정이 가능하도록 설계되었습니다. 직렬화, 인증, 페이지 매김, 필터링 등을 위한 많은 기본 제공 기능을 제공하므로 개발자가 모범 사례를 따르는 API를 보다 쉽게 ​​만들 수 있습니다.

 

웹브라우저 흐름
DNS(Domain name system) 
HTTP 요청 
Socket 라이브러리
TCP/IP 작성 후 HTTP 

프로토콜 계층
어플리케이션  > Socket Library  >  TCP > IP > LAN > 인터넷

Internet Protocol
지정 IP주소로 전송
출발 IP와 목적 IP를 작성
송신하면 노드들을 거쳐서 송신
받을 대상이 없을 수 있다
중간에 패킷이 손실되거나 순서에맞춰서

TCP
IP를 TCP로 
출발 port와 목적 port 정보
전송제어와 순서
검증 정보 등
연결지향 TCP 3 way handshake

UDP
User Datagram Protocol
TCP 기능들이 없다
IP와 유사한데 포트와 체크섬만 추가

URI (Uniform Resource Identifier) : 리소스 식별
URL
URN

포트는 같은 IP내에서 프로세스 구분을 해줄 수 있다
포트 생략시 http 80 https 443
http가 더 옛날 방식이고 그걸 보완한 https가 더 안전한 방식

 



HTTP
HyperText Transfer Protocol

원래는 HTML 전송용, 현재는 모든 형태를 전송

클라이언트 서버 구조
클라이언트는 Request를 보내고 Response를 기다림

무상태 프로토콜(Stateless) (↔ Stateful)
세션이 종료될 때까지 클라이언트 세션 정보를 저장하지 않음
무상태는 응답 서버를 쉽게 바꿀 수 있음
세션 로그인은 상태가 있음. 최소한으로만 사용한다는 개념

비연결성
연결 유지를 하지 않으며 최소한의 자원 사용
HTTP는 기본적으로 연결을 유지하지 않음
초단위 이하의 빠른 응답


HTTP 메시지
요청메시지와 응답메시지가 다르게 생김


리소스
회원이라는 개념. 이것이 URI에 매핑되며
거기에 하는 행위가 메서드로 하는 것

Restful API
리소스와 행위를 분리하는 것

리소스 : 회원
행위 : 조회, 등록, 삭제, 변경


메서드의 종류
GET : 조회
데이터를 쿼리스트링으로 전달

POST : 등록
메시지 바디를 통해 서버로 요청 데이터 전달

PUT : 대체, 혹은 생성
파일 붙여넣기와 동일. 없으면 만들고 있으면 덮어쓴다

포스트와의 차이점 : PUT은 클라이언트가 URI를 지정하여 보냄

PATCH : 부분 변경
HEAD : GET과 동일하지만 상태줄과 헤더만 반환

https://developer.mozilla.org/en-US/docs/Web/HTTP/Methods

 

HTTP request methods - HTTP | MDN

HTTP defines a set of request methods to indicate the desired action to be performed for a given resource. Although they can also be nouns, these request methods are sometimes referred to as HTTP verbs. Each of them implements a different semantic, but som

developer.mozilla.org

데이터 전송
쿼리 파라미터 : GET (검색, 정렬 필터)
메시지 바디 : POST, PUT, PATCH (회원가입, 상품주문, 리소스 등록 변경)

HTML Form : GET, POST만 지원
Content-Type: application/x-www-form-urlencoded
Content-Type: multipart/form-data



HTTP API : POST, PUT, PATCH도 메시지 바디로 데이터 전송 가능
서버 to 서버, 앱 클라이언트, 웹 클라이언트(ajax)
Content-Type: application/json

API 설계 예시
회원 관리 - 컬렉션 기반

GET /members : 회원 목록
POST /members : 회원 등록
GET /members/{id} : 회원 조회
PATCH,PUT,POST /members/{id} : 회원 수정
DELETE /members/{id} : 회원 삭제