Server/HTTP

[HTTP] 기본 지식

개발자킹콩 2022. 8. 9. 23:57

기존 HTTP 동작 방식을 이해하고 있었고, 백엔드 개발자와 소통 과정에서 만들어진 API를 문서를 통해 잘 사용할 수는 있었다. 그런데 서버 개발을 시작하면서 API를 구현할 때, GET으로 구현 후 header로 받을지 POST를 통해 body로 받을지 어떤 것이 더 효율적이며 좋은지를 구분할 수 없었기에 배움이 필요하다고 생각했다.

 

그래서 배달의 민족 기술이사인 김영한 님의 "모든 개발자를 위한 HTTP 웹 기본 지식"을 수강하기로 했다.

총 강의는 340분(6시간 40분)이며, 8월 10일~11일 중으로 강의를 끝내고 만들던 API 구현을 마무리할 생각이다.

 

참고로 저자는 Java+SpringBoot가 아닌 Python+Django를 사용해서 백엔드를 구현하고 있다.

 

 


 

강의를 시작하며

해당 강의는 API로 GET, POST, PUT 등 어떤 HTTP method를 제공할지를 설계하는 백엔드 개발자에게 도움이 될 것이다. 

 

강의 소개와 순서

1. 인터넷 네트워크: HTTP도 결국 TCP/IP 혹은 UDP 기반 위에서 동작하기 때문에 기본적인 네트워크에 대한 지식이 필요하다.

- 해당 복잡한 인터넷 망에서 데이터가 어떻게 흐르는지

- 프로토콜 계층들은 어떻게 되는지

- TCP/IP의 개념과 3 way handshake 개념

- DNS

 

2. URI와 웹 브라우저 요청 흐름

- URI? URL? URN?

- HTTP 메세지 전송, 웹 브라우저 동작방식을 세부적으로 이루어 지는지

(HTTP method가 어떻게 만들어지고, 이게 어떻게 TCP/IP에 감싸지고 메세지가 넘어가는지)

- 패킷의 동작방식(웹 브라우저 HTML Rendering)

 

3. HTTP 기본

-  HTTP 특징

- Stateless, Stateful에 대해 자세히!!!

- 지속연결

- HTTP 메세지 형태

 

4. HTTP Method

- 무작정 API URI 설계 (URI: Uniform Resource Identifier): 왜 필요한지 알기위해 

(어떤 문제가 있고, method를 통해 무엇을 해결할 수 있는지)

- 종류 (GET, POST, PUT, PATCH, DELETE)

- Method Property(안전, 멱등, 캐시가능)

 

5. HTTP 메서드 활용

- Query parameter 조회

- HTML Form에 데이터 전송, API로 데이터 전송

- HTTP API 설계 예시

- 이론과 실무에서 생기는 한계의 극복

 

6. HTTP 상태코드

- 2xx

- 3xx(리다이렉트, 리다이렉션 개념)

- 4xx(클라이언트 오류)

- 5xx(서버 오류)

 

7. HTTP Header

- 종류가 많아서, 어떤 기능이 있는데 이를 위해 이런 헤더들이 사용됨을 묶음 단위로 설명한다.

- 표현(Content)

- 협상(콘텐츠 네고시에이션-Accept)

- 전송 방식 설명

- Cookie Header

 

8. HTTP Header - Cache

- 캐시가 필요한 이유부터 쭉~설명

(일반적으로 사용하는 브라우저 캐시들이 왜 필요하고 어떤 메커니즘으로 동작하는지)

- 브라우저와 서버 사이에 캐시서버(Proxy Cache Server)가 존재할 수 있는데 이를 설명

- Cache를 어떻게 무효화 할 수 있는지 설명