ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 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
Designed by Tistory.