_won_
wonprogrammer
_won_
전체 방문자
오늘
어제
  • 분류 전체보기
    • woncoding
      • TIL
      • WIL
    • source Code
      • Python
      • Programmers
      • BAEKJOON

블로그 메뉴

  • 방명록

티스토리

Github · Wonprogrammer
hELLO · Designed By 정상우.
_won_

wonprogrammer

TIL | 10.24.월 [Django : DRF]
woncoding/TIL

TIL | 10.24.월 [Django : DRF]

2022. 10. 24. 21:22

- Django Rest Framework

 

HTTP와 웹의 동작 방식

  • 프론트엔드와 백엔드의 역할을 이해한다.
  • HTTP 메시지의 구조를 이해한다.
  • Request와 Response 메시지의 역할을 이해한다.
  • HTTP의 상태코드의 역할을 이해한다.
  • HTTP의 헤더의 역할을 이해한다.
  • 웹의 요청 흐름을 이해한다.
  • State와 Stateless의 뜻을 이해한다.
  • Restful한 API 설계를 할 수 있다.

 

 

 


 

 

 

 

 

[웹 브라우저의 흐름]

  1. 도메인 주소 조회
  2. HTTP 요청 메세지 작성
  3. socket 라이브러리를 통해 전달
  4. TCP/IP 작성 (← 이 안에 HTTP 메세지 포함)

 

 


 

 

 

[URI]

특정 리소스를 식별하는 통합 자원 식별자(Uniform Resource Identifier)를 의미한다 (정확한 주소는 URL이 가지고 있음)

  • URI 포트 생략시
    • http = 80
    • https = 443

 

 

 


 

 

 

 

[HTTP]

HyperText Transfer Protocol

HTML 전송 뿐만 아니라 다른 모든 형태를 전송 할 수 있다.

 

 

- 특징

  • 클라이언트 - 서버 구조
    • 클라이언트 : Request
    • 서버 : Response

👉 이렇게 분리되어 있으면 독립적 진화 가능 ( 예) 사용자 폭주시 서버만 독립적 진화 가능 )

 

  • Stateless : 무상태 프로토콜
    • 어떠한 이전 요청과도 무관한 각각의 요청을 독립적인 트랜잭션으로 취급하는 통신 프로토콜이다 + 통신이 독립적인 쌍의 요청과 응답을 이룰 수 있게 하는 방식이다. 
    • 서버가 클라이언트 상태를 보존하지 않음
    • 무상태는 응답서버를 쉽게 바꿀 수 있음

👉 비연결성 즉, 요청마다 응답 후 연결을 유지하고 있지 않는다. 최소한의 자원 사용.

 

 

 

 

 

- HTTP 메세지

  • (a) Request : Method
  • (b) Response : 네트워크 http의 버전 + http 상태 코드 번호 + protocol header(info)/body(html)
    • ex) HTTP/1.0 200 OK

 

 

 

 

- URL 설계

기초 장고는 각각의 페이지 마다 url을 설정해 줬지만 DRF에서는 리소스식 별로 url을 정의해준다. 

  • 리소스? - 예) 회원
  • 행위? - Method
    • GET : 데이터는 쿼리스트링(쿼리문)으로 전달
    • POST : 메세지 바디를 통해 서버로 요청 데이터 전달 + 데이터를 처리
    • Put : 대체 or 생성 (덮어쓰기 or 붙여넣기)
    • Patch : 부분 변경(수정)
    • Head : GET과 비슷 but 상태줄과 헤더만 변경 (body부분은 그대로)

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

 

 

 

 

 

 

- 데이터 전송

  • DRF에선 Form을 통한 데이터 전달 대신 API를 통해 데이터를 전송한다. 
  • API 설계 예시

회원관리 기반
PUT 기반 파일 등록

 

 

 

 

 

 

 

 

- HTTP 상태 코드

  • 100 - 199 : 요청 수신중 (거의 사용 ❎)
  • 200 - 299 
    • 200 : OK
    • 201 Created : 헤더에 로케이션 추가 후 새로운 리소스의 URI 알려줌
  • 300 - 399 : 추가 행위 필요
  • 400 - 499 : 주로 잘못된 문법 (클라이언트 에러)
    • 401 : 인증이 안됨 
    • 404 : 리소스 없음 or 숨김
  • 500 - 599 : 최근 일어난 카카오 데이터 센터 화재사건시 일어났던 에러 즉, 서버에러
    • 복구 후 재시도시 성공 가능

 

 

 

 

 

 

- HTTP Header

Method 요청에 대한 Response 메세지의 Header

Header 부분

 

👉 Header가 가지고 있는 정보

  • 메세지 바디 내용
  • 메세지 바디 크기
  • 압축
  • 인증
  • 요청 클라이언트
  • 캐시 관리

 

 

 

 

 

 

 

 

 

 

 

저작자표시 비영리 변경금지 (새창열림)

'woncoding > TIL' 카테고리의 다른 글

TIL | 10.26.수 [Django : DRF]  (0) 2022.10.27
TIL | 10.25.화 [Django : DRF]  (0) 2022.10.25
TIL | 10.21.금 [머신러닝 / Django]  (0) 2022.10.24
TIL | 10.20.목 [머신러닝 / Django]  (0) 2022.10.20
TIL | 10.19.수 [머신러닝 / Django]  (0) 2022.10.20
    'woncoding/TIL' 카테고리의 다른 글
    • TIL | 10.26.수 [Django : DRF]
    • TIL | 10.25.화 [Django : DRF]
    • TIL | 10.21.금 [머신러닝 / Django]
    • TIL | 10.20.목 [머신러닝 / Django]
    _won_
    _won_
    Coding Practice blog

    티스토리툴바