우아한테크코스의 레벨2 지하철 노선도 미션의 인수 테스트를 작성하면서 Request와 Response 메세지를 볼 기회가 많았다. 늘 body의 data들만 중요하다고 생각했었는데 header값들의 의미도 궁금해졌다. header의 의미를 알면 http 통신에 대해 더 잘 이해할 수 있지 않을까? 라는 의구심을 갖게 되어 학습을 하게 됐다.
우선 개발한 API의 몇몇 HTTP 통신 메세지를 봐보자.
HTTP Request
POST /lines/1/sections HTTP/1.1
accept: */*
content-type: application/json
content-length: 55
host: localhost:65393
connection: Keep-Alive
user-agent: Apache-HttpClient/4.5.13 (Java/15.0.1)
accept-encoding: gzip,deflate
HTTP Response
HTTP/1.1 200 OK
Keep-Alive: timeout=60
Connection: keep-alive
Vary: Origin
Content-Length: 0
Date: Thu, 12 May 2022 09:32:18 GMT
HTTP Request
DELETE /lines/1/sections?stationId=2 HTTP/1.1
accept: */*
host: localhost:65402
connection: Keep-Alive
user-agent: Apache-HttpClient/4.5.13 (Java/15.0.1)
accept-encoding: gzip,deflate
HTTP Response
HTTP/1.1 200 OK
Keep-Alive: timeout=60
Connection: keep-alive
Vary: Origin
Content-Length: 0
Date: Thu, 12 May 2022 09:33:10 GMT
HTTP Request
POST /lines HTTP/1.1
accept: */*
content-type: application/json
content-length: 98
host: localhost:65413
connection: Keep-Alive
user-agent: Apache-HttpClient/4.5.13 (Java/15.0.1)
accept-encoding: gzip,deflate
HTTP Response
HTTP/1.1 201 Created
Transfer-Encoding: chunked
Keep-Alive: timeout=60
Connection: keep-alive
Vary: Origin
Date: Thu, 12 May 2022 09:33:53 GMT
Location: /lines/1
Content-Type: application/json
HTTP 헤더는 클라이언트와 서버가 요청 또는 응답으로 부가적인 정보를 전송할 수 있게 해준다.
이제 미션에서 개발한 API의 통신에서 사용하고 있는 Header의 종류와 용도에 대해 알아보자.
Request에서 사용된 header와 Response에서 사용된 header로 나누어서 알아 보도록하자.
Content-Type: text/html; charset=utf-8
Content-Type: multipart/form-data; boundary=something
위의 헤더들이 현재 진행하고 있는 미션에서 사용되고 있는 header들이다.
몇몇 HTTP header들에 대해 알아보면서 HTTP message를 좀 더 잘 이해할 수 있게 되었다. 원래 HTTP 메시지들을 보면 모르는 것들이 많아서 거부감이 들었는데 header들에 알아보고 나니 메세지를 보는 것에 대한 두려움이 없어졌다. 앞으로 http에 대해서 많이 공부해보고 싶게 만드는 원동력이 된 학습이였다.