해나아부지 개발일지

HTTP란 무엇인가? 본문

Developers/Server&Node

HTTP란 무엇인가?

__APPA 2020. 8. 14. 22:11

Achievement Goals

  • HTTP 요청/응답을 브라우저를 통해 확인할 수 있고, 해당 내용을 읽을 수 있다.
  • HTTP 다양한 요청 방식과, 응답 코드에 대해 이해할 수 있다.

HTTP는 Hyper Text Transfer Protocol의 약자로 웹에서 이루어지는 모든 데이터 교환의 시작이며 클라이언트와 서버간의 약속이라고도 할 수 있다. 클라이언트와 서버 사이에는 OSI(Open Systems Interconnection) 7계층이라는 네트워크 계층이 있고 각 단계를 거쳐 통신이 이루어진다.

 

클라이언트의 요청(request)을 하면 서버는 어떤식으로든 응답(response)을 한다. 1 request -> 1 response!

 

HTTP requset & HTTP response

Stateless

클라이언트(브라우저)와 서버 사이에는 수많은 요청과 응답이 있지만 각각의 요청과 응답은 독립적으로 이루어진다. 

즉, 각각의 요청과 응답들은 서로 상관이 없다.

 

Connectionless

클라이언트의 요청과 요청에 대한 서버로부터의 응답을 하기까지 클라이언트와 서버가 연결되어 있는 상태라고 본다면 요청과 응답이라는 사이클이 종료되고 나면 클라이언트와 서버 사이의 연결은 끊어진다.

 

 

Fetch API

API는 응용프로그램들 사이에 상호작용을 도와주는 역할을 한다. 상호작용이란 HTTP requset와 HTTP response이다.

HTTP 기반으로 가장 일반적으로 사용된 API는 XMLHttpRequest API 이지만 최신 Fetch API는 보다 강력하고 유연한 기능을 제공한다.

 

//XMLHttpRequset
function requsetListener () {
  console.log(this.responseText);
}

var oReq = new XMLHttpRequest();
oReq.addEventListener("load", reqListener);
oReq.open("GET", "http://www.example.org/example.txt");
oReq.send();

//Fetch
const fetch = fetch("http://www.example.org/example.txt")
	      .then(response => {
                    return response.json()
                    })
              .then(json => console.log(json))

 

fetch API의 default method는 "GET"으로 생략이 가능하다. 코드의 간결성과 가독성이 좋아진다.

 

HTTP 요청 메서드

  • GET 서버의 특정 리소스를 요청하여 받는 메서드
  • POST 특정 리소스에 데이터를 넣어주는 메서드
  • PUT 지정된 리소스에 모든 항목을 대체하는 메서드
  • DELETE  특정 리소스를 제거하는 메서드
  • OPTIONS  지정된 리소스의 통신 옵션을 지정하는 메서드

※ PATCH (≒ PUT) 지정된 리소스에 일부분만을 대체하는 메서드

 

HTTP Status Codes

HTTP 응답 코드(중요)

  • 2xx 요청의 대한 응답이 성공적으로 수행됐을 때
  • 4xx 클라이언트의 부적절한 요청이나 권한이 없는 클라이언트가 접근을 할 때
  • 5xx 서버의 문제가 있을 경우

 

 

Comments