<aside> 💡 #request #response #http #header #body #content_type #signup
</aside>
HTTP (Hyper Text Transfer Protocol)
이 때, 오고가는 요청과 응답 데이터의 구조를 알아두면 좋습니다.
사실 이 구조 자체가 앞서 언급한 통신 규약에 해당합니다.
요청 (Request)
클라이언트에서 서버로 보내는 요청(Request) 데이터는 크게 세 가지 요소로 구성됩니다.
시작줄(Start-Line), 헤더(Headers), 그리고 바디(Body).
시작줄은 서버에서 어떤 동작을 취해야할지 알려주는 정보입니다.
다음과 같이 세 가지 요소로 이루어져 있습니다.
HTTP 메서드(Method)
서버에게 수행해야 할 동작이 무엇인지 알려줍니다.
요청의 목적과 의도에 맞는 적절한 메서드를 사용해야 합니다.
일반적으로 사용되는 HTTP 메서드는 다음과 같습니다.
GET: 서버로부터 리소스를 요청하고 가져옵니다.
POST: 서버에 새로운 데이터를 전송하거나 처리를 요청합니다.
PUT: 서버에 새로운 데이터를 전송하거나 기존 리소스를 업데이트합니다.
DELETE: 서버에서 리소스를 삭제합니다.
PATCH: 서버에 부분적인 데이터 업데이트를 요청합니다.
HEAD: GET과 유사하지만, 바디(body)를 포함하지 않고 헤더 정보만을 요청합니다.
OPTIONS: 서버에서 지원되는 메서드의 목록이나 리소스의 특성(Headers)을 요청합니다.
https://www.example.com:8080/api/data?param1=value1¶m2=value2
http
, https
), 호스트(www.example.com
), 포트(:8080
), 경로(/api/
), 쿼리 파라미터(data?param1=value1¶m2=value2
)로 구성됩니다.HTTP 버전
JavaScript
의 fetch()
함수 등) 및 프레임워크에서 자동으로 시작줄(Start-Line)에 포함시키기 때문입니다.헤더(Headers)
application/json
은 JSON 형식의 데이터를 나타냅니다.이외에도 다양한 헤더가 있으며, 요청의 목적이나 필요에 따라 헤더를 추가할 수 있습니다.
바디(Body)
data
를 JSON
형식으로 보내려면 JSON.stringify(data)
와 같은 작업이 필요합니다.응답 (Response)
HTTP 응답의 시작줄은 상태줄(status line)이라고 불리며, 다음과 같은 정보를 가지고 있습니다.
프로토콜 버전(HTTP/1.1
등)
상태 코드(200
, 404
, 302
등)
2xx
는 성공, 3xx
는 리다이렉션, 4xx
는 클라이언트 오류, 5xx
는 서버 오류를 의미합니다.OK
, Not Found
등)HTTP/1.1 404 Not Found
와 같이 생겼습니다.