깔끔한 파이썬 탄탄한 백엔드 - 4장

Jajuna_99·2022년 6월 9일
0

4장 HTTP의 구조 및 핵심 요소

  • HTTP 핵심 요소
  • HTTP 구조
  • 자주 사용되는 HTTP 메소드와 Status Code
  • HTTP 핵심 요소

    HTTP는 HyperText Transfer Protocol의 약자이다. 웹상에서 서로 다른 서버 간에 하이퍼텍스트 문서, 즉 HTML을 서로 다른 서버 간에 하이퍼텍스트 문서(HTML)을 서로 주고받을 수 있도록 만들어진 프로토콜(통신 규약)이다.

    HTTP 통신의 특징

    • 요청(request)과 응답(response)
      HTTP는 요청과 응답의 구조로 되어있다. 클라이언트가 서버에 요청을 보내면 서버는 요청을 처리하고 응답을 보낸다.

    • Stateless
      말 그대로 상태가 없다는 개념이다. 이 말은 각각의 HTTP 통신은 독립적이며 그 전에 처리된 HTTP 통신에 대해서 저장 되지 않는다는 특성이다.
      이 때문에 서버 디자인이 간단해지고 효과적인 장점이 있다. (진행이나 연결 상태의 처리나 저장을 구현 및 관리 하지 않아도 되기 때문)
      그래서 요청을 처리하기 위해 필요한 모든 데이터를 매번 포함시켜서 요청을 보내야 한다. 예를 들어 로그인 확인을 위해 쿠키나 세션을 요청에 포함해서 보내는 것이다.
      *쿠키 : 웹 브라우저가 웹사이트에서 보내온 정보를 저장할 수 있도록 하는 조그만 파일
      *세션 : 쿠키와 마찬가지로 HTTP 통신상에서 필요한 데이터를 저장할 수 있게 하는 메커니즘. 차이점은 쿠키는 클라이언트 측에서 저장, 세션은 웹 서버에서 저장한다.

    HTTP 구조

    HTTP 요청 구조는 Start Line, Headers, Body; HTTP 응답 구조는 Status Line, Headers, Body가 있고 필요한 정보들을 담고 있다.!
    나머지 자세한 정보들은
    이 문서를 참고하자!

    자주 사용되는 HTTP 메소드와 Status Code

    HTTP 메소드들

    GET : 어떤 데이터를 서버로부터 요청(GET) 할 때 사용하는 메소드
    POST : 데이터를 생성, 수정 및 삭제 요청 할 때 사용하는 메소드
    OPTIONS : 특정 엔드포인트에서 허용하는 메소드들이 무엇이 있는지 알고자 하는 요청 할 때 사용하는 메소드
    PUT : 데이터를 새로 생성할 때 사용되는 메소드, POST로 해결 가능하기에 잘 쓰이지 않는 메소드
    DELETE : 데이터 삭제 요청 할 때 사용하는 메소드
    이 외에도 더 있지만 책에서는 위 5개만 소개한다.

    HTTP Status Code

    200 OK : HTTP 요청이 문제없이 잘 처리 되었을 때 보내는 코드
    301 Moved Permanently : 요청을 보낸 엔드포인트의 URL 주소가 바뀌었다는 것을 나타내는 코드 (엔드포인트의 새로운 주소에 해당 요청을 다시 보내게 된다. -> redirection)
    200 Bad Request : 요청이 잘못된 요청일 때 보내는 코드, 보통 input 값들이 잘못될 때가 흔하다.
    200 Unauthorized : 요청을 하는 주체가 신분 확인이 요구되나 확인할 수 없을 때 보내는 코드
    200 Forbidden : 해당 요청에 대한 권한이 없음을 나타내는 코드
    200 Not Found : 요청을 보내고자 하는 URI가 존재하지 않을 때 보내는 코드
    200 Internal Server Error : 내부 서버 오류가 발생했다는 것을 알려주는 코드.

    API 엔드포인트 아키텍처 패턴

    RESTful HTTP API

    API에서 전송하는 리소스를 URI로 표현하고 해당 리소스에 행하고자 하는 의도를 HTTP 메소드로 정의하는 방식.

    각 엔드포인트는 처리하는 리소스를 표현하는 고유의 URI 주소를 가지고 있으며, 해당 리소스에 행할 수 있는 행위를 표현하는 HTTP 메소드를 처리할 수 있다.

    장점은 엔드포인트 구조만 보더라도 리소스와 기능을 파악할 수 있는 자기 설명력(self-descriptiveness)이다.

    GraphQL

    RESTful HTTP의 가장 큰 문제는 over-fatch이다. 한 번의 요청에 필요 이상에 정보들이 같이 응답된다.

    서버가 정의한 틀에서 벗어나 자유롭게 원하는 데이터를 원하는 방식이 필요했고 그 해결책으로 페이스북에서 GraphQL을 만들었다.

    4장 요약

    HTTP 구조와 핵심 요소들, 세부 정보들을 보는 방법, 즉 웹에서 어떻게 통신하는지 간단하게 알아봤습니다.

    profile
    Learning bunch, mostly computer and language

    0개의 댓글