본문 바로가기

Computer Science/Network

HTTP와 HTTPs, REST API와 RESTful API 란?

HTTP(HyperText Transfer Protocol)

  • 컴퓨터들의 통신 규약(protoco) 중 하나로, 웹에서 사용하는 프로토콜
  • 통신 간 사용하는 형식이라고 생각하면 쉽다
    • ex) 우편 형식 : 사람이 알아보는 형식
    • HTTP 형식 : 컴퓨터가 알아보는 형식

HTTP 는 크게 요청 (HTTP Request)과 응답 (HTTP Response)으로 나뉘어져 있다

HTTP Request

  • 한 컴퓨터가 다른 컴퓨터에 리소스 요청을 보낼 때 사용
  • 클라이언트의 목적에 따라 다르게 분류
  • ex) 네이버에 접속할 때 웹 페이지를 달라고 요청할 수도 있고, 로그인 할 때에는 정보가 맞는지 확인을 해달라고 요청할 수도 있음

CRUD 에 사용되는 HTTP 메소드

  • GET : 특정 리소스를 달라고 할 때에 사용
    • 예시: 페이지 로딩할 때
  • POST : 서버 측의 특정 리소스를 저장할 때 사용
    • 예시: 회원가입을 할 때에 특정 유저의 정보를 서버에 저장
  • PUT/PATCH : 서버 측의 특정 리소스를 업데이트 할 때 사용
    • PUT 은 데이터 전부를 바꿀 때, PATCH 는 부분적으로 변경할 때 사용
    • 예시: 사용자 닉넴임 변경
  • DELETE : 서버 측의 특정 리소스를 삭제할 때 사용
    • 예시: 유저 탈퇴

MDN HTTP Request Methods 참고

  • 이러한 요청들을 특정 방법으로 사용하도록 정해진 것은 아님
  • DELETE 메소드를 사용해 회원가입을 진행할 수 있고 GET 으로 업데이트도 할 수 있음
  • 어느 HTTP 메소드인지에 따라 제한은 있음
  • GET 이나 DELETE 와 같은 경우에는 주소에만 데이터를 담아 넘길 수 있음
  • API 를 제작할 때에는 보통 REST 가이드라인을 따라 제작

HTTP Response

  • 응답 또한 HTTP 규약에 따른다
  • 클라이언트 측에서 요청을 보내게 되는 경우 서버 측에서도 다양한 응답을 보냄
  • 응답은 상태 코드(Status Code)를 가짐

HTTP 상태 코드

  • 100 번대 : 정보 응답
  • 200 번대 : 성공 응답
  • 300 번대 : 리다이렉션 메시지
  • 400 번대 : 클라이언트 에러 응답
  • 500 번대 : 서버 에러 응답

HTTP 예시

웹 페이지에서 오른쪽 클릭 후, 검사를 들어가면, Network 탭에서 실제 HTTP 요청과 응답을 볼 수 있다

내 블로그 주소를 눌러보았다. 

  • Request Method : HTTP 요청 메소드 중 GET, 리소스를 가져온다는 뜻
  • Status Code : 200 은 'OK', 성공했다는 뜻. 여기에서는 GET 요청이 성공적이었다는 뜻
  • Request URL : 누가 요청을 하고 있는지를 담고 있음
  • Remote Address : 어느 리모트 서버에 요청을 하고 있는지 알려줌. 현재는 211.249.222.3 의 443 포트에 요청을 보내고 있음
  • Referrer Policy : 요청을 보내는 곳이 당사자인지, 타 웹사이트에서 연결된 건지 등을 알려줌. 현재는 'unsafe-url' 로 현 웹사이트에서 보내고 있음

HTTPS(HyperText Transfer Protocol Secure)

  • Secure ? 안전!
    • 아이디, 비번 그대로 보내는 HTTP
    • 아이디, 비번을 암호화해서 보내는 HTTPS

다양한 프로토콜의 종류

  • HTTP : Hyper Text Transfer Protocol
  • HTTPS : Hyper Text Transfer Protocol Secure
  • FTP : File Transfer Protocol
  • SFTP : Secure File Transfer Protocol
  • Telnet : TErminaL NETwork
  • POP3 : Post Office Protocol version 3
  • SMTP : Simple Mail Transfer Protocol
  • SSH : Secure Shell
  • SSL : Secure Socket Layer
  • SOAP : Simple Object Access Protocol
  • ARP : Adress Resolution Protocol

REST API

  • REST: REpresentational State of Transfer 
  • 분산 하이퍼미디어 시스템을 위한 소프트웨어의 아키텍쳐를 어떻게 형성할 지에 대한 가이드라인
  • 총 6개의 가이드라인이 존재하는데 다 따르게 된다면 해당 아키텍쳐를 'RESTful' 이라고 부르게됨
  • 웹에서 활용하게 되는 API 가 REST 의 가이드라인들은 다 따르면 해당 API 를 RESTful API 라고 부를 수 있음
  • 전부 따르지 않더라도 큰 의미에서 REST API 라고 부름

REST Architectural constraints

  • Client–server architecture(서버-클라이언트 구조) : 서버와 클라이언트의 역할을 분명하게 구분
  • Statelessness(무상태성) : 각각의 요청에 대한 정보를 저장하지 않고 별개의 요청으로 처리
  • Cacheability(캐시 가능) : 캐시 기능을 이용하여 같은 URI에 대한 반복 요청을 효율적으로 처리
  • Layered system(계층 구조) : 클라이언트와 서버의 통신 사이에 보안이나 로드 밸런싱 등을 위한 중간 계층을 추가할 수 있음
  • Code on demand (주문형 코드) : 서버는 실행 가능한 코드를 전송하여 클라이언트의 기능을 확장하거나 정의 가능
  • Uniform interface(일관된 인터페이스) : 플랫폼에 상관없이 사용할 수 있음, 리소스 타입에 상관없이 같은 형태의 요청

'Computer Science > Network' 카테고리의 다른 글

캡슐화와 역캡슐화란?  (0) 2024.02.25
TCP/IP 란?  (0) 2023.04.24
IP, DNS, Port(포트), Server(서버) 란?  (0) 2023.01.13