

위 그림은 HTTP Request Message를 나타낸 그림이다.
HTTP Request Message의 시작 부분이다.
start line은 3가지 구조로 구성된다.
GET /pda.html HTTP/1.1 HTTP Method Request target HTTP version
HTTP method는 Request를 보내는 의도를 나타낸다.
Request target은 HTTP Request가 전송되는 주소이다.
HTTP version은 버전에 따라서 Request 메시지 구조나 데이터가 다를 수 있어서 version을 명시.
request에 대한 추가 정보를 담고 있는 부분이다.
현재 Velog를 작성하는 페이지에서 개발자도구 - 네트워크 페이지에서
작성중인 글을 임시저장 (graphql) 할 때 발생하는 요청 헤더를 확인해보았다.

Accept: */*
Accept-Encoding: gzip, deflate, br, zstd
Accept-Language: ko-KR, ko;q~
Access-Control-Request- POST
Origin: https://velog.io
User-Agent: Mozilla/5.0
...
정말 여러 헤더 속성들이 사용되는 것을 확인할 수 있었다.
위 헤더에 대한 내 생각으로는
Accept는 클라이언트가 처리 가능한 미디어 타입들을 종류별로 나열한 것이므로 / 를 보니 왠지 클라이언트가 모든 타입들을 처리할 수 있다 라는 것을 명시한 것 같다.
User-agent 클라이언트 프로그램 정보에 대한 내용이므로 현재 Velog는 Mozilla/5.0, AppleWebKit, Chrome, Safari 등에 대한 브라우저에 맞는 최적의 데이터를 보내줄 수 있다는 의미인 것 같다.
Referer은 바로 직전에 머물렀던 웹 링크 주소를 의미하므로 https://velog.io/ 를 직전에 머물렀다는 것 같다.
Origin은 서버로 Post 요청을 보낼 때 요청이 어느 주소에 시작되었는지 나타내는 값으로 요청이 https://velog.io 주소에서 요청이 시작되었다는 것을 알 수 있다. 그리고 임시 저장 요청을 했을 때, CORS 에러가 발생하지 않았으므로 요청을 받는 주소 역시 https://velog.io라는 것을 알 수 있다.
Request가 전송하는 데이터를 담고 있는 부분을 의미한다.

header 부분과 동일하게 임시저장 요청을 하였을 때 body에 어떤 데이터가 저장되는지 확인해보았다.
body에 대한 정보는 작업관리자 - 네트워크 - 페이로드 부분에서 확인할 수 있다.
여기서 알 수 있던 것은
임시저장 요청을 할 경우, 내가 작성한 글들은 variables.body에 text 형식으로 저장되어 요청되는 것을 알 수 있었고, 선택한 태그의 경우 tags라는 배열에 저장되어 전송되는 것을 알 수 있었다. 제목의 경우 title이라는 것에 저장이 되는 것을 알 수 있었다.
위 내용들은 HTML 형식 데이터 이며
전송하는 데이터가 없다면 body가 비어 있기도 하는 것을 알 수 있었다.
Request에서 내가 생각했을 때 중요한 부분
1. Request의 header에 들어가는 필드 값이 많은 것 같다.
각 필드값이 무엇을 의미하는지 공부해보면 좋을 것 같다.
2. start line에서 HTTP version에 대해 명시되어 있는데
아직 어떤 의미인지는 잘 모르겠다. 찾아보고 공부해봐야 할 것 같다.
status line, headers, body로 구성되어 있다.

HTTP/1.1 200 OK
status code
클라이언트에게 요청이 성공적으로 처리되었는지, 실패했는지 알려주게 되는데 이후에 클라이언트가 다음 단계의 동작을 계속할지 오류를 처리할지 결정할 수 있기 때문에 중요하다고 생각한다.