먼저 http에 대해 이해하려면 프로토콜이 무엇인지 알아야 한다.
프로토콜이란?
프로토콜은 컴퓨터 내부에서, 또는 컴퓨터 사이에서 데이터의 교환 방식을 정의하는 규칙 체계입니다. 기기 간 통신은 교환되는 데이터의 형식에 대해 상호 합의를 요구합니다. 이런 형식을 정의하는 규칙의 집합을 프로토콜이라고 합니다.
(출저 : mdn)
컴퓨터 내부 혹은 컴퓨터나 다른 디바이스들간의 통신을 하는데 데이터를 주고 받는 형식을 통일해야한다. 서로 다른 형식으로 데이터를 주고받는다면, 통신을 하는데 문제가 발생할 수 있기 때문이다.
HTTP(Hyper Text Transfer Protocol) 란 클라이언트와 서버간의 통신을 하기 위해 만든 프로토콜이다.
클라이언트와 서버가 주고받는 메시지의 내용이나 순서를 정한 통신 규약임!!
웹의 통신은 기본적으로 요청(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 아키텍쳐에 대해 이해해야 한다.
HTTP를 바탕으로 클라이언트가 서버의 리소스에 접근하는 방식을 규정한게 REST 아키텍쳐이다.
이러한 아키텍쳐는 HTTP의 장점을 최대한 활용 할 수 있게 설계되어 있다.
REST API는 REST 아키텍쳐를 기반으로 서비스 API를 구현 한 것을 말한다.
REST API의 구성 : 자체표현구조로만 되어있어 REST API만으로 HTTP요청의 내용을 이해할 수 있다.
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번유저의 게시글 전체
ref)
성공과 실패를 결정하는 1% 네트워크 1장
JS Deep Dive 44장 REST API