TIL Day 48.

Jen Devver·2024년 4월 22일

내배캠 TIL

목록 보기
55/91

Django 심화 주차

HTTP와 URL 구조

HTTP

- Hyper Text Transfer Protocol
- 클라이언트 ⇄ 서버: 클라이언트가 보내는 메세지는 요청, 서버가 보내는 메세지는 응답
- 단순하고 확장성이 용이한 구조
→ stateless (무상태): 서버가 클라이언트의 상태를 보존하지 않음
→ connectless (비연결성): 요청에 대한 응답 후 연결이 종료되어 연결이 유지되지 않음

HTTP Message
요청, 응답이 비슷한 구조를 지님

  • Start Line:
    요청 Method, Target, HTTP version
    응답 HTTP version, Status Code, Status Message
  • Headers: 메타 정보
  • Body: 데이터

HTTP Status Code
200번대: 성공 → 200번을 제일 많이 보게 될 것
400번대: 클라이언트의 요청이 잘못됨
→ 400번은 요청을 처리 ❌
→ 401번은 클라이언트가 인증 ❌
→ 403번은 금지된 요청 (Forbidden)
→ 404번은 요청한 자원을 찾을 수 없음 (Not Found)
500번대: 서버의 에러
→ 500번: 서버가 수행을 못함, 포괄적으로는 서버가 동작 ❌
→ 503번: 서버가 다운되었거나 일시적으로 중단된 상태 (Service Unavailable)

URL
URI = Uniform Resource Identifier
요청의 대상(resource)인 자원을 식별하기 위해 사용. URL과 같은 의미로 사용됨

URL = Uniform Resource Locator: 위치를 나타내는 문자열.

URN = Uniform Resource Name: 예) 도서 ISBN

https://localhost:8080/path/to/resource/?key=value#docs

https:// : Scheme (Protocol)
localhost : Host (Domain name) 웹 서버
:8080 : Port 접근하는 게이트
/path/to/resource/ : Path 리소스 경로
?key=value : Query(Identifier) 추가 변수
#docs : Fragment(Anchor) 자원 안에서의 위치

RESTful API

API = Application Programming Interface
웹 어플리케이션과 소통하는 방식

REST = Representational State Transfer
웹에 대한 소프트웨어 설계 방법론

처음 개념이 제시된 논문:
Fielding, R. T. (2000). Architectural styles and the design of network-based software architectures. University of California, Irvine.

논문 읽어볼 것 !

RESTful API 는 따라서 어플리케이션과 소통할 때 REST 표현을 더하는 것.
요청 형식을 보고 추론이 가능함

예:
POST /articles/ 새로운 article 생성할 것이라는 것을 예측 가능

일반적으로 GET POST DELETE PUT+PATCH 사용

JSON = JavaScript Object Notation
데이터를 담는 형식. dict 처럼 key-value 구조로 되어있다.

{key:value} : object
["문자열", 1, true] : list

{
	"object": {
    	"key1": "value1",
    	"key2": "value2",
      	"key3": ["element1","element2","element3"],
    },
}

Response 와 Serializer

기초 강의에서는 html response를 받았지만 이제 json response를 받도록 해보는 것

django의 JsonResponse를 이용

이 때 Serialization을 하는 것
Serialization = 직렬화. 데이터 구조를 유지하면서 저장, 전송을 위해 다른 포맷으로 변경하는 것.

Queryset이나 Model의 instance를 직렬화해 JSON으로 변환

django seed
조회를 하기 위한 데이터를 생성해 준다.
pip install django-seed
pip freeze > requirements.txt
# settings.py 에서
INSTALLED_APPS = [
	,
    ,
    # Third-party
    "django-seed",
    # local
    "app_name",
]
으로 추가해준다.
# 이후 seeding 실행
python manage.py seed <app_name> --number = 원하는 데이터 수
모델 네임 변경 후 migrations 해줘야 함!
모델 네임을 Articles에서 Article로 변경해주었는데 에러 발생함.
에러 메세지를 보니 모듈 네임을 바꾸면 migration을 해줘야 한다고 함.

모델에 새로운 변수 추가나 변수 변경에만 migration을 하는 것이 아니라 모델 이름을 바꿔도 해주어야 한다는 것을 알았다!
profile
발전 중...

0개의 댓글