curl · fetch 레시피

JSON 요청·인증·파일 업로드·재시도 등 자주 하는 HTTP 작업을 curl과 fetch 코드로 정리했습니다.

Advanced

Retry on 429 with backoff

429 Too Many Requests(속도 제한) 응답을 만났을 때 잠시 기다렸다가 지수 백오프로 재시도하는 레시피입니다.

Set a request timeout

느리거나 응답 없는 서버에 무한정 매달리지 않도록 요청에 타임아웃을 거는 레시피입니다. 기본값은 대부분 무한대라 반드시 명시해야 합니다.

Request a compressed response

`Accept-Encoding`으로 압축된 응답을 요청해 전송량을 크게 줄이는 레시피입니다. 큰 JSON·텍스트 응답에서 특히 효과적입니다.

Consume Server-Sent Events

서버가 하나의 열린 연결로 이벤트를 계속 밀어 보내는 Server-Sent Events(SSE, `text/event-stream`)를 소비하는 레시피입니다.

Send a GraphQL query

GraphQL 엔드포인트에 쿼리와 변수를 담아 POST하는 레시피입니다. 하나의 요청으로 필요한 필드만 정확히 받아옵니다.

Auth

Send a Bearer token

OAuth 2.0·JWT 등에서 발급한 액세스 토큰을 `Authorization: Bearer` 헤더로 보내는 레시피입니다. 오늘날 가장 흔한 API 인증 방식입니다.

Use Basic authentication

사용자 이름과 비밀번호를 `user:pass` 형태로 base64 인코딩해 보내는 HTTP Basic 인증 레시피입니다.

Caching

Conditional GET with ETag

이전에 받은 ETag를 `If-None-Match`로 되돌려 보내, 리소스가 바뀌지 않았으면 304 Not Modified만 받아 대역폭을 아끼는 조건부 GET 레시피입니다.

Resume a download with Range

이미 받은 만큼 이후 바이트만 요청해 끊긴 다운로드를 이어받는 레시피입니다. `Range` 헤더와 206 Partial Content를 활용합니다.

Debugging

Inspect response headers

응답 본문을 내려받지 않고 상태 코드와 응답 헤더만 확인하는 레시피입니다. 캐시 정책·콘텐츠 타입·리다이렉트 점검에 유용합니다.

Debug a request verbosely

요청·응답의 실제 헤더와 TLS 핸드셰이크까지 자세히 출력해 문제의 원인을 눈으로 확인하는 디버깅 레시피입니다.

Skip TLS verification for local dev

자체 서명 인증서를 쓰는 로컬 개발 서버에 접속하기 위해 TLS 인증서 검증을 건너뛰는 레시피입니다. 반드시 개발 환경에서만 사용하세요.

Trigger a CORS preflight

브라우저가 크로스 오리진 요청 전에 보내는 CORS 프리플라이트(OPTIONS)를 curl로 재현해, 서버 CORS 설정을 검증하는 레시피입니다.

Measure request timing

요청의 각 단계(DNS·연결·TLS·첫 바이트·전체) 소요 시간을 측정해 지연의 원인을 구간별로 파악하는 레시피입니다.

Files

Upload a file with multipart/form-data

`multipart/form-data`로 파일과 텍스트 필드를 함께 업로드하는 레시피입니다. 브라우저 파일 업로드 폼과 같은 방식입니다.

Download a file to disk

원격 파일을 받아 디스크에 저장하는 레시피입니다. 이미지·PDF·바이너리 등 모든 종류의 파일에 적용됩니다.

Requests

Fetch JSON with GET

GET 요청으로 서버에서 JSON 데이터를 받아 파싱하는 가장 기본적인 레시피입니다. 읽기 전용이며 본문을 보내지 않습니다.

Send a JSON POST

요청 본문에 JSON을 담아 POST로 새 리소스를 생성하는 레시피입니다. 성공 시 보통 201 Created와 생성된 리소스를 돌려받습니다.

Replace a resource with PUT

PUT으로 리소스 전체를 새 표현으로 교체하는 레시피입니다. 보낸 본문이 곧 리소스의 완전한 새 상태가 됩니다.

Partially update with PATCH

PATCH로 리소스의 일부 필드만 부분 수정하는 레시피입니다. 바꾸려는 필드만 보내면 나머지는 그대로 유지됩니다.

Delete a resource

DELETE 메서드로 지정한 리소스를 삭제하는 레시피입니다. 성공 시 보통 본문 없는 204 No Content를 받습니다.

Follow redirects

3xx 리다이렉트 응답의 `Location` 헤더를 따라 최종 목적지까지 이동하는 방법과, 반대로 리다이렉트를 따르지 않고 관찰하는 방법을 다룹니다.

Send custom headers

요청에 임의의 커스텀 헤더를 추가하는 레시피입니다. 요청 추적 ID, API 버전, 언어 선호 등을 전달할 때 씁니다.

Send and store cookies

서버가 보낸 쿠키를 저장했다가 이후 요청에 자동으로 실어 보내는 레시피입니다. 세션 기반 로그인 흐름에 필수입니다.

Submit a URL-encoded form

`application/x-www-form-urlencoded`로 폼 데이터를 보내는 레시피입니다. 전통적인 HTML 폼 전송과 OAuth 토큰 엔드포인트 등에서 씁니다.