-
HTTP와 URL구조Django 2024. 8. 29. 18:52
http가 진짜 중요한가보다. 끊임없이 나온다.🤔
📚 01. HTTP
Hyper Text Transfer Protocol ⇒ Web에서 이루어지는 데이터 교환의 약속
HTTP를 사용해서 클라이언트와 서버는 요청을 하고 응답을 한다.
- Request: 클라이언트가 서버로 보내는 요청 메세지
- Response: 서버가 클라이언트에게 보내는 메세지
HTTP의 특성
Stateless (무상태)
- 모든 응답과 요청은 독립적이다. 서로가 서로를 기억하지 않는다. (뭔가 슬픔🥲)
Connectless (비연결성)
- 연결을 유지하지 않으므로 서버 자원을 효율적으로 사용할 수 있다.
- 이후 HTTP1.1이 등장하면서 개선됨
- 요청 받고 응답을 주고나면 연결을 종료한다.
즉, 단순하고 확장성이 용이한 구조를 가졌다. 정은 없지만 효율적인 아이..
Http Message의 구조
- 요청과 응답은 구조가 비슷합니다.
- 시작(Start Line) - 실행되어야할 요청, 요청에 대한 성공 또는 실패
- HTTP Header - 요청에 대한 설명, 본문에 대한 설명
- 빈줄(Blank Line) - 메타 정보의 끝을 알림
- HTTP Body - 요청과 관련된 내용, 응답과 관련된 문서
요청(Request)
- Start Line: Method, Traget, HTTP Version
- Headers: 요청에 필요한 여러가지 메타 정보
- Body: 요청에 필요한 여러가지 데이터
응답(Response)
- Start Line: HTTP Version, Status Code, Status Message
- Headers:응답에 대한 열가지 메타 정보
- Body: 요청을 처리한 여러가지 데이터
HTTP Request Methods
MDN 공식문서 https://developer.mozilla.org/ko/docs/Web/HTTP/Methods
- 어떤 동작을 하려고 하는지를 나타낸다.
- GET, POST, PUT, DELETE, … 등이 있다.
HTTP Status Code
- HTTP 요청에 대해 성공 여부를 나타내는 코드값
- 크게 5개의 그룹으로 나누어진다.
- 1XX : Informational Response
- 2XX : Successful Response😄
- 3XX : Redirection Message
- 4XX : Client Error Response😡
- 5XX: Server Error Response🧐
400번대 500번대를 만났다면 일단 실패한거다:(
400번대는 클라이언트가 잘못한거, 500번대는 서버가 잘못한거.. 옛날엔 500번대 에러뜨면 서버잘못이네 하고 넘어갔는데.. 이제 넘어갈 수가 없네..🤔
→ 200 OK
- 성공 - 에러없이 요청이 성공
→ 400 Bad Request
- 클라이언트의 요청이 잘못되었음
- 서버는 해당 요청을 처리하지 않음
→ 401 Unauthorized
- 클라이언트가 인증이 되지 않았거나 인증정보가 유효하지 않음.
→ 403 Forbidden
- 서버에서 요청을 이해했으나 금지된 요청.
- 요청에 대한 자원이 있으나 수행할 권한이 없음.
대망의.. 가장 많이 봤던 404에러..
→ 404 Not Found
- 요청한 자원을 찾을 수 없음
→ 500 Internal Server Error
- 요청에 대해 서버가 수행하지 못하는 상황
- 서버가 동작하지 않는다는 포괄적인 의미가 내포됨
🐽 02. URL
✔️ 자원을 식별하기 위해 사용하는 URL
💡 웹에서의 자원의 식별
- 우리가 어떤 요청을 하는 대상을 자원(Resource)이라고 한다. → 문서, 사진, 영상 등
- 이러한 자원을 식별하기 위해 URI(Uniform Resource Identifier)를 사용한다.
URI의 구조
https://www.aidenlim.dev:80/path/to/resource/?key=value#docs
https://
Scheme(Protocol)이라고 부르는 브라우저가 사용하는 프로토콜. https만 있는건 아니고 http, https, ftp, file 등 여러가지가 있다.
www.aidenlim.dev
Host(Domain name): 요청을 처리하는 웹 서버로, 일반적으로 IP 주소를 대신 도메인 이름을 받아서 사용한다.
:80
Port번회: 리소스에 접근할 때 사용되는 일종의 문. (HTTP: 80 / HTTPS: 443이 표준 포트)
/path/to/resource/
Path: 웹 서버에서의 리소스 경로. 웹 초기에는 실제 물리적인 위치를 나타냈으나 현재는 추상화된 형태를 표현한다.
?key=value
Query(Identifier): 웹 서버에 제공하는 추가적인 변수. (&로 구분되는 Key=Value 형태의 데이터)
#docs
Fragment(Anchor): 해당 자원 안에서의 특정 위치 (북마크)를 나타내고, HTML 문서의 특정 부분을 보여주기 위한 방법.
'Django' 카테고리의 다른 글
Django REST Framework, Postman (3) 2024.09.01 JSON Response와 Serialization (1) 2024.09.01 Django Model Relationship (M:N) (0) 2024.08.27 Django Custom UserModel (0) 2024.08.19 Djnago Model Relationship (1:N) (0) 2024.08.19