소소한 지식 사전!

[소지사] Http란

개발 공주 2023. 6. 25. 18:58
728x90

Http(HyperText Transfer Protocol)

  • 데이터를 주고 받는 양식을 정의한 "통신 규약"중 하나
  • Plain text, JSON, XML 등 다양한 형태의 정보도 전송하는 애플리케이션 레이어 프로토콜이다.
  • 매우 범용적인 양식을 가지고 있어 전 세계에서 제일 널리 쓰이는 통신 규약

통신 규약 => 컴퓨터끼리 데이터를 주고 받을 때 정해둔 약속


HTTP 동작 방식

클라이언트
서버에게 요청을 보내는 리소스 사용자 ex) 웹 브라우저, 모바일 애플리케이션, IoT 등
서버
클라이언트에게 요청에 대한 응답을 제공하는 리소스 관리자

 

  • 클라이언트가 HTTP reuquest를 서버에 보내면 서버는 HTTP response를 보내는 구조
  • 클라이언트와 서버의 모든 통신이 요청과 응답으로 이루어진다.

HTTP 구조

HTTP Method (호출/요청 방식)

  • 해당 request가 의도한 action을 정의하는 부분,
  • HTTP Methods 에는 GET, POST, PUT, DELETE, OPTIONS 등등이 있다.
  • 주로 GET과 POST가 쓰임

Header (추가 데이터. 메타 데이터)

  • 브라우저가 어떤 페이지를 원하는지
  • 요청 받은 페이지를 찾았는지
  • 요청 받은 데이터를 성공적으로 찾았는지
  • 어떤 형식으로 데이터를 보낼지
  • GET naver.com HTTP/1.1
  • 이러한 사례 외에도 아주 다양한 의사 표현을 위한 데이터를 모두 Header 필드에 넣고 주고 받습니다. 위에서 설명 된 메서드도 사실은 헤더에 포함되어 서버로 보내집니다.

Body

  • 실제 메세지/내용 (payload)
  • Body가 없는 request도 많다
    GET request들은 대부분 body가 없는 경우가 많음.
  • Payload (데이터. 실제 데이터)
    • 서버가 응답을 보낼 때에는 항상 Payload를 보낼 수 있습니다.
    • 클라이언트(브라우저)가 요청을 할 때에도 Payload를 보낼 수 있습니다. 그리고 "GET method를 제외하곤 모두 Payload를 보낼 수 있다" 는게 HTTP에서의 약속입니다.

HTTP 요청 메서드

GET

  • 특정 리소스를 받기 위한 요청이다. 따라서, 리소스의 생성, 수정 및 삭제 등에 사용해서는 안된다.

POST

  •  리소스를 생성하거나 컨트롤러를 실행하는 데 사용한다.

PUT

  • 변경 가능한 리소스를 업데이트하는 데 사용되며 항상 리소스 식별 정보를 포함해야 한다.

PATCH

  •  변경 가능한 리소스의 부분 업데이트에 사용되며 항상 리소스 식별 정보를 포함해야 한다.
     PUT을 사용해 전체 객체를 업데이트하는 것이 관례여서 거의 사용되지 않는다.

DELETE

  •  특정 리소스를 제거하는 데 사용한다.
     일반적으로 Request body가 아닌 URI 경로에 제거하려는 리소스의 ID를 전달한다.

HEAD

  •  클라이언트가 본문 없이 리소스에 대한 헹더만 검색하는 경우 사용한다.
     일반적으로 클라이언트가 서버에 리소스가 있는 지 확인하거나 메타 데이터를 읽으려는 때만 GET 대신 사용한다.

OPTIONS

  •  클라이언트가 서버의 리소스에 대해 수행 가능한 동작을 알아보기 위해 사용한다. 
     일반적으로 서버는 이 리소스에 대해 사용할 수 있는 HTTP 요청 메서드를 포함하는 Allow 헤더를 반환한다.