HTTP 요청 코드 생성기
HTTP 요청 정보를 fetch 코드와 POSIX curl 명령으로 생성합니다.
메서드, URL, 헤더, 본문을 입력하면 같은 요청을 보내는 fetch 코드와 curl 명령을 만들어 줍니다. 실제 요청은 보내지 않고 코드 조각만 생성합니다.
사용 순서
- 드롭다운에서 HTTP 메서드를 고릅니다. GET과 HEAD는 본문을 받을 수 없습니다.
- URL 입력란에 http 또는 https로 시작하는 주소를 넣습니다.
- 헤더 칸에 한 줄에 하나씩 이름: 값 형식으로 입력하고, 필요하면 본문 칸에 본문을 넣습니다.
- 결과 영역의 fetch 코드와 curl 명령을 각각 복사합니다.
예시
GET 메서드, URL https://example.com/api?name=hello, 헤더 Accept: application/json을 입력하면 curl --globoff --request 'GET' --url 'https://example.com/api?name=hello' --header 'accept: application/json' 형식의 명령이 나옵니다. 헤더 이름은 소문자로 바뀝니다.
한계
드롭다운에는 GET, HEAD, POST, PUT, PATCH, DELETE, OPTIONS 일곱 개만 있습니다. 검증 단계에서는 CONNECT, TRACE, TRACK도 거부합니다. URL에 사용자 이름이나 비밀번호가 있으면 오류가 납니다. 헤더 값에 U+0100 이상의 문자(한글 등)가 있으면 오류가 납니다. 생성된 코드는 실행하지 않으므로 실제 응답은 확인되지 않습니다.
보안 주의
Authorization이나 Cookie 헤더를 넣으면 생성된 fetch와 curl 코드에 자격 증명이 평문으로 들어갑니다. 이 코드를 저장소나 문서에 붙이기 전에 토큰을 환경 변수로 바꾸세요. 본문에 작은따옴표가 있으면 셸 이스케이프가 적용되므로, 복사한 명령은 한 번 실행해 확인하는 것이 좋습니다.
배경 지식
HTTP 요청은 메서드, 경로, 헤더, 본문의 조합으로 이루어집니다. GET은 자원을 읽고 본문을 갖지 않는 것이 규약이며, POST, PUT, PATCH는 본문으로 데이터를 보냅니다. DELETE는 자원을 지우고, OPTIONS는 CORS 사전 요청에서 흔히 쓰입니다. 브라우저 코드와 셸 명령으로 같은 요청을 옮겨 적는 일이 잦아서, 두 형식을 함께 만들어 두면 재현 과정이 빨라집니다.
curl 명령은 셸이 따옴표와 특수문자를 해석하므로 값을 작은따옴표로 감싸고, 값 안의 작은따옴표는 닫았다가 다시 여는 방식으로 이스케이프합니다. fetch는 자바스크립트 문자열이므로 JSON.stringify로 감싸고, 헤더는 이름과 값의 쌍 배열로 넘깁니다. 두 결과는 같은 요청이지만 헤더 표현이 다르므로, 서버가 헤더 이름의 대소문자를 무시하는지 함께 확인해야 합니다.
자주 묻는 질문
POST 요청에서 Content-Type을 생략해도 되나요?
생략하면 fetch는 문자열 본문에 text/plain을 자동으로 붙입니다. 서버가 JSON을 기대한다면 Content-Type: application/json을 헤더 칸에 직접 넣어야 합니다. 이 도구는 입력한 헤더만 그대로 넣습니다.
curl의 -d와 --data-raw는 어떻게 다른가요?
-d는 본문 값이 @로 시작하면 파일 경로로 읽고, 읽은 내용에서 줄바꿈을 제거합니다. --data-raw는 값을 그대로 보내므로 이 도구는 그 옵션을 씁니다. 바이너리 파일을 보낼 때는 --data-binary를 써야 합니다.
curl 명령에 --globoff가 붙는 이유는 무엇인가요?
curl은 기본적으로 URL 안의 중괄호와 대괄호를 범위 표기로 해석합니다. --globoff를 붙이면 ids[]=1 같은 쿼리 문자열이 그대로 전달됩니다. 이 도구는 대괄호가 들어간 URL도 바뀌지 않도록 이 옵션을 기본으로 넣습니다.