[2주차 개념 스터디]-1

이누의 벨로그·2021년 8월 12일
0

HTTP

목록 보기
2/4

HTTP 요청 메소드

HTTP 요청 메소드란 클라이언트가 웹 서버에게 사용자 요청의 목적/종류를 알리는 수단이다.

우선 한가지 새로 접하는 용어를 알아야 될 필요가 있는데, 나에게는 태어나서 처음 본 용어이다. 처음에는 중국어인줄 알았다.

멱등성:
동일한 요청을 한 번 보내는 것과 여러 번 연속으로 보내는 것이 같은 효과를 지니고, 서버의 상태도 동일하게 남을 때, 해당 HTTP 메서드가 멱등성을 가졌다고 말합니다. 다른 말로는, 멱등성 메서드에는 통계 기록 등을 제외하면 어떠한 부수 효과(side effect)도 존재해서는 안됩니다. 올바르게 구현한 경우 GET, HEAD, PUT, DELETE 메서드는 멱등성을 가지며, POST 메서드는 그렇지 않습니다. 모든 안전한 메서드는 멱등성도 가집니다.

멱등성을 따질 땐 실제 서버의 백엔드 상태만 보면 되며, 각 요청에서 반환하는 응답 코드는 다를 수 있습니다. 첫 번째 DELETE 요청이 200을 반환한다면, 그 이후는 아마 404를 반환할 것입니다. DELETE가 멱등성을 가진다는 것은, REST API에서 개발자는 DELETE 메서드를 사용해 "목록의 마지막 항목 제거" 기능을 구현해서는 안된다는 것입니다.

다만, 서버는 멱등성을 보장하지 않으며, 일부 애플리케이션은 잘못된 구현으로 멱등성 제약을 어길 수도 있습니다.

어감은 어렵지만, 설명을 듣고나니 이해가 된다. 그러면 이제 요청 메소드에는 어떤 것이 있는지 알아보자.

  • GET
    GET 메서드는 특정 리소스의 표시를 요청합니다. GET을 사용하는 요청은 오직 데이터를 받기만 합니다.
  • HEAD
    HEAD 메서드는 GET 메서드의 요청과 동일한 응답을 요구하지만, 응답 본문을 포함하지 않습니다.
  • POST
    POST 메서드는 특정 리소스에 엔티티를 제출할 때 쓰입니다. 이는 종종 서버의 상태의 변화나 부작용을 일으킵니다.
  • PUT
    PUT 메서드는 목적 리소스 모든 현재 표시를 요청 payload로 바꿉니다.
  • DELETE
    DELETE 메서드는 특정 리소스를 삭제합니다.
  • CONNECT
    CONNECT 메서드는 목적 리소스로 식별되는 서버로의 터널을 맺습니다.
  • OPTIONS
    OPTIONS 메서드는 목적 리소스의 통신을 설정하는 데 쓰입니다.
  • TRACE (en-US)
    TRACE 메서드는 목적 리소스의 경로를 따라 메시지 loop-back 테스트를 합니다.
  • PATCH
    PATCH 메서드는 리소스의 부분만을 수정하는 데 쓰입니다.

상태 코드

상태 코드의 첫 번째 숫자에 따라 크게 5가지로 분류 된다.

1xx : Informational
2xx : Success
3xx : Redirection
4xx : Client Error
5xx : Server Error

간략하게 각각의 특징만 써보겠다.

1xx : 조건부 응답

Request received, continuing process
요청을 받았으며 작업을 계속함 을 의미한다..(이 상태 코드를 만날 일은 거의 없다고 한다.)

2xx : 성공

The action was successfully received, understood, and accepted
요청을 성공적으로 받았으며, 인식했고, 수용함 을 의미한다..

3xx : 리다이렉션 완료

Further action must be taken in order to complete the request
요청 완료를 위해 추가 작업 조치가 필요함 을 의미한다..

4xx : 요청 오류

The request contains bad syntax or cannot be fulfilled
요청의 문법이 잘못되었거나 요청을 처리할 수 없음 을 의미한다..

5xx : 서버 오류

The server failed to fulfill an apparently valid request
서버가 명백히 유효한 요청에 대해 충족을 실패했음 을 의미한다..

HTTP와 HTTPS

지난 2014년, 구글에서는 HTTP를 HTTPS로 바꾸라고 권고하면서, 이를 장려하기 위해 HTTPS를 사용하는 웹 사이트에 대해 검색 순위 결과에 가산점을 주겠다고 발표했다. 이는 사실상 HTTP를 사용하는 웹 사이트들에 벌점을 주는 것과 마찬가지로, 오늘날 웹사이트들은 검색 엔진 최적화를 위해 사이트를 HTTPS로 전환하기도 한다.
그렇다면 HTTPS는 뭘까? 우선, HTTP는 텍스트 프로토콜이다. 이말인 즉슨, 서버와 브라우저 사이에 정보를 평문으로 전송한다는 말이다. 따라서 정보가 전달되는 네트워크에서 전송되는 정보를 엿볼 수 있으며, 이런 보안 문제로 인해 클라이언트와 서버가 먼저 암호화 통신 채널을 설정한 다음 평문 HTTP 메시지를 전송함으로써 정보 유출을 막는 HTTPSHTTP Secure가 소개되었다.
HTTPS는 소켓 통신에서는 HTTP와 마찬가지로 일반 텍스트를 이용한다. 하지만 SSL이나 TLS 프로토콜을 통해 세션데이터를 암호화하여 데이터의 적절한 보호를 보장한다.

profile
inudevlog.com으로 이전해용

0개의 댓글