GET

HTTP GET

안전 (Safe)
멱등 (Idempotent)
캐시 가능
요청 본문아니오
응답 본문

개요

GET은 서버에서 리소스를 조회할 때 쓰는 가장 기본적인 HTTP 메서드입니다. 서버 상태를 바꾸지 않고 데이터를 읽기만 하므로 안전(safe)하고, 같은 요청을 여러 번 보내도 결과가 같아 멱등(idempotent)합니다.

자세히

GET 요청은 본문(body)을 갖지 않는 것이 원칙입니다. 필요한 파라미터는 URL 쿼리스트링(`?q=value`)이나 경로에 담습니다. 따라서 민감한 정보를 GET 쿼리에 넣으면 브라우저 기록·서버 로그·Referer 헤더에 그대로 남으니 주의해야 합니다.

GET 응답은 캐시 가능(cacheable)합니다. `Cache-Control`·`ETag`·`Last-Modified` 헤더를 함께 보내면 브라우저·CDN·프록시가 응답을 저장해 재요청 시 304 Not Modified로 대역폭을 아낍니다. 대량 리소스는 `Range` 헤더로 일부만 받아 206 Partial Content로 응답받을 수 있습니다.

요청 / 응답 예시

요청
GET /api/users/42 HTTP/1.1
Host: api.example.com
Accept: application/json
응답
HTTP/1.1 200 OK
Content-Type: application/json
Cache-Control: max-age=60

{ "id": 42, "name": "Ada" }

코드로 보기

curl https://api.example.com/api/users/42
const res = await fetch('/api/users/42');
if (res.ok) {
  const user = await res.json();
}
@app.get('/api/users/<int:uid>')
def get_user(uid):
    user = db.find(uid)
    return jsonify(user) if user else ('', 404)

흔한 실수

주로 함께 쓰는 상태코드

관련 메서드

관련 헤더