Django HTTP

Django HTTP

·

2 min read

HTTP

요청 (Request)

클라이언트 → 서버로 전송되는 메세지

응답 (Response)

서버 → 클라이언트로 전송되는 메세지

HTTP의 특성

Stateless (무상태)

서로를 기억하지 않는다. → 상태를 보존하지 않기 때문에 상태를 기억하기 위해 나온 기술 : 쿠키, 세션

→ 서버가 클라이언트의 상태를 보존하지 않는다.

→ 모든 응답과 요청은 독립적이다.

Connectless (비연결성)

한번 요청을 주고받고 나면 연결을 끊어버린다. 이후 자원을 주고받고 싶으면 다시 연결을 해야한다.

왜 이렇게 만들었는가?

연결을 한번 맺고 이 연결을 유지하려면 유지하는데 또 다른 여러가지 자원이 든다.

즉, 연결을 유지하지 않음으로써 서버의 자원을 효율적으로 사용하기 위해 만들었다.

→ 요청 받고 응답을 주고나면 연결을 종료한다.

→ 연결을 유지하지 않으므로 서버 자원을 효율적으로 사용 가능하다.

→ 이후 HTTP1.1이 등장하면서 개선되었다.

⇒ 단순하며 확장성이 용이한 구조

HTTP message

요청(Request)

  • 클라이언트가 서버로 전달해서 서버의 어떤 행동(action)이 일어나게 하는 것을 의미

응답(Response)

  • 요청에 대한 서버의 답변을 의미

Http Message의 구조

  • 요청과 응답은 구조가 비슷하다.

  • 시작(Start Line) - 실행되어야할 요청, 요청에 대한 성공 또는 실패

  • HTTP Header - 요청에 대한 설명, 본문에 대한 설명

  • 빈줄(Blank Line) - 메타 정보의 끝을 알림

  • HTTP Body - 요청과 관련된 내용, 응답과 관련된 문서

HTTP Request Methods

요청 자원에 대한 행위를 나타낸다. 즉, 어떤 동작을 하려고 하는지에 대해 나타낸다.

GET 요청 : 내가 원하는 데이터(리소스)를 달라고 하는 요청이다.

서버에서 get을 받으면 해당 리소스를 그냥 준다. (그 리소스를 달라고 하는게 get 요청이구나!)

그렇다면 해당 리소스는 어디에 있는가? url에 적혀있는 리소스를 GET 달라고 하는 요청이다.

POST 요청 : url에 대해서 데이터베이스를 조작하는 요청일 때 POST 요청을 보낸다.