HTTP와 REST API

이수빈·2023년 3월 2일
1

CS

목록 보기
1/4
  • CS를 공부하는 중 여러부분에 떨어져있어서 헷갈렸던 CS지식들을 정리하려고 이 글을 작성하게 되었다.

HTTP(Hyper Text Transfer Protocol) 란?

  • 먼저 http에 대해 이해하려면 프로토콜이 무엇인지 알아야 한다.

  • 프로토콜이란?

프로토콜은 컴퓨터 내부에서, 또는 컴퓨터 사이에서 데이터의 교환 방식을 정의하는 규칙 체계입니다. 기기 간 통신은 교환되는 데이터의 형식에 대해 상호 합의를 요구합니다. 이런 형식을 정의하는 규칙의 집합을 프로토콜이라고 합니다.
(출저 : mdn)

  • 컴퓨터 내부 혹은 컴퓨터나 다른 디바이스들간의 통신을 하는데 데이터를 주고 받는 형식을 통일해야한다. 서로 다른 형식으로 데이터를 주고받는다면, 통신을 하는데 문제가 발생할 수 있기 때문이다.

  • HTTP(Hyper Text Transfer Protocol) 란 클라이언트와 서버간의 통신을 하기 위해 만든 프로토콜이다.

클라이언트와 서버가 주고받는 메시지의 내용이나 순서를 정한 통신 규약임!!

브라우저는 HTTP메세지를 만든다

  • 웹의 통신은 기본적으로 요청(REQUEST)과 응답(RESPONSE)의 반복으로 이루어진다.

  • 우리가 브라우저에 URL을 입력하면,브라우저가 처음 하는 일은 웹 서버에 보내는 리퀘스트의 메세지를 작성하기 위해 이 URL을 해독하는 것이다.

  • URL을 parsing한 후에 브라우저는 HTTP를 바탕으로 리퀘스트 메세지를 만든다.

  • Request메세지에는 > URI, 메소드,헤더 등이 포함된다.

  • 무엇을 어떻게해서 라는 내용이 존재.. 무엇에 해당하는 것이 URI이다.(Uniform Resource Identifier)

    보통 데이터를 저장한 파일의 이름이나 CGI 프로그램의 파일명을 URI로 씀.(파일명 보내줘)
    EX) /dir1/file1.html, /dir1/program1.cgi 와 같은 식임.

  • URL(Uniform Resource Locator) VS URI(Uniform Resource Identifier)

    URL은 URI에서 프로토콜이 결합된 형태임
    EX) https://velog.io/@bnb8419/HTTP%EC%99%80-REST-API
    URI는 식별자로 ACCESS하려는 대상을 나타냄
    EX) velog.io/@bnb8419

  • URI(식별자)는 URL(식별자+위치)가 될 수 있음 ! URI는 URL을 포괄하는 이다.

  • 어떻게 해서에 해당하는 것이 메소드임.

    GET, POST-송신, PUT-수정(치환) ,DELETE 등

  • 리퀘스트 메세지가 서버에 도착하면, 서버는 리퀘스트 메세지를 해독한다.

  • URI와 메시지를 조사하여 무엇을, 어떻게 하는지 판단한 후 요구에 따라 동작하고 결과데이터를 응답메세지에 저장한다.

  • 응답 메세지의 앞부분에는 실행결과에 대한 status code가 존재한다.

  • 이후 헤더파일과 페이지의 데이터가 이어지고 이 응답메세지를 클라이언트에게 반송한다.

  • 리퀘스트 메세지의 구성

  • 첫번째 행 : 리퀘스트 라인(리퀘스트의 내용을 대략 알 수 있다.)
  • header : 부가적인 정보를 기술하는 부분
  • body : 전달할 메세지의 실제 내용(GET이면 없고, POST면 추가할 내용..)

REST API란?

  • REST API가 무엇인지 알려면, REST 아키텍쳐에 대해 이해해야 한다.

  • HTTP를 바탕으로 클라이언트가 서버의 리소스에 접근하는 방식을 규정한게 REST 아키텍쳐이다.

  • 이러한 아키텍쳐는 HTTP의 장점을 최대한 활용 할 수 있게 설계되어 있다.

  • REST API는 REST 아키텍쳐를 기반으로 서비스 API를 구현 한 것을 말한다.

  • REST API의 구성 : 자체표현구조로만 되어있어 REST API만으로 HTTP요청의 내용을 이해할 수 있다.

    • 자원 (Resouce) - URI
    • 행위 (Verb) - HTTP Method
    • 표현 (Representations)
  • REST API를 설계하는데에는 두가지 중요한 원칙이 존재한다.

  • URI는 리소스를 표현하는데 집중(명사)
  • 행위에 대한 정의 > HTTP 요청 메소드를 통해 사용한다.
  • 리소스를 식별할 수 있는 이름은 동사보다는 명사를 활용해야 한다.
#BAD
GET /getTodos/1 
GET /todos/show/1 // 행위가 들어가면 안됨. 

#GOOD
GET 1todos/1
GET /posts  //게시글 전체
GET /posts/1  //게시글 전체중 id가 1인놈
GET /users/1/posts // 1번유저의 게시글 전체
  • 행위에 대한 요청은 HTTP요청 메서드를 통해 한다
  • 5가지 요청 HTTP 메서드
  • 리소스에 대한 행위는 HTTP요청 메서드를 통해 표현하고 URI에 표현하지 않는다.

결론

  • HTTP 자체는 클라이언트와 서버의 메세지를 주고받기 위해 정해놓은 통신규약이다.
  • 이런 통신규약을 잘 활용해 API를 설계하려고 나온 개념이 REST 아키텍쳐이고,
  • REST 아키텍쳐를 잘 따라서 설계한 API를 REST API라고 부르는 것이다.

ref)
성공과 실패를 결정하는 1% 네트워크 1장
JS Deep Dive 44장 REST API

profile
응애 나 애기 개발자

0개의 댓글