API 테스트에서 코드 작성까지

curl 코드 변환기

디버깅한 API 요청을 프로젝트 코드로 옮겨 보세요. curl 명령을 붙여넣으면 선택한 언어로 코드를 만들고, 실행 환경에 따른 차이도 확인할 수 있습니다.

curl요청 코드
브라우저에서 변환
01

헤더와 본문이 포함된 HTTP 요청 하나를 붙여넣으세요. POSIX 따옴표와 역슬래시 줄 연결을 지원합니다.

POSTexample.com헤더 3개
02
async function main() {
  const response = await fetch("https://example.com/api/messages", {
    method: "POST",
    headers: [
      ["Authorization", "Bearer YOUR_TOKEN"],
      ["Content-Type", "application/json"],
      ["Accept", "application/json"]
    ],
    body: "{\"message\":\"Hello from curl\",\"enabled\":true}",
    redirect: "manual",
    credentials: "omit"
  });
  console.log(response.status);
  console.log(await response.text());
}

main().catch(console.error);

브라우저 Fetch 또는 Node.js 18+

실행 전 확인

  • 변환 중에는 요청을 보내지 않습니다. 코드에 입력 URL, 헤더, 인증 정보가 포함되므로 공유 전에 확인하세요.
  • 브라우저 Fetch는 CORS를 따릅니다. credentials: omit으로 쿠키를 자동 전송하지 않으므로 필요하면 인증 정보를 직접 설정하세요. 수동 리디렉션은 불투명 응답을 반환할 수 있습니다.

가입 없이 이용하세요. 명령어를 실행하지 않으며 입력은 브라우저 안에서 처리합니다.

테스트한 요청을 애플리케이션에 연결하기

개발자 도구에서 복사한 curl 명령에는 API 재현에 필요한 URL, 헤더, 본문이 담겨 있습니다. 이를 파이썬 스크립트나 프런트엔드 코드에 넣으려면 라이브러리 호출 방식에 맞춰 정리해야 합니다. 이 도구는 요청 데이터를 옮긴 코드를 생성하고, 별도 확인이 필요한 부분을 알려 줍니다.

curl 명령을 변환하는 순서

HTTP 또는 HTTPS URL 하나가 포함된 curl 명령을 입력한 뒤 출력 언어를 선택하세요. 메서드와 본문을 확인하고 변환 안내를 읽은 다음, 코드를 복사하거나 파일로 다운로드하면 됩니다. 변환 중에는 API 요청을 보내지 않습니다.

공백이 있는 값의 따옴표를 유지하세요. 브라우저에서 복사할 때는 bash 형식을 사용합니다. 셸 변수와 명령 치환은 실제 값으로 바꿔야 합니다. 파일 업로드, multipart 폼, 파일 본문 및 미지원 옵션은 수동 설정이 필요합니다.

파이썬 Requests, 자바스크립트 Fetch, PHP 중 선택하기

Python은 pip install requests로 설치하는 Requests를 사용하며 인라인 본문을 UTF-8 바이트로 전송합니다. PHP는 cURL 확장이 필요합니다. JavaScript는 브라우저 또는 Fetch를 지원하는 Node.js에서 사용할 수 있는 코드입니다.

JSON을 다시 객체로 직렬화하지 않아 입력한 숫자, 공백, 중복 키를 변환 과정에서 바꾸지 않습니다. 다만 JSON 문법 검사는 하지 않습니다. 애플리케이션에 필요한 타임아웃과 오류 처리는 실행 환경에 맞게 추가하세요.

curl에서는 되는데 Fetch에서는 안 되는 이유

브라우저는 CORS 정책을 적용하고 일부 헤더를 직접 관리합니다. Fetch에서 제외한 헤더는 안내에 이름을 표시합니다. credentials: omit을 사용하므로 브라우저 세션의 쿠키도 자동으로 전송하지 않습니다. 헤더를 서버에서 직접 제어해야 한다면 Python이나 PHP를 검토하세요.

-L이 없으면 Fetch는 리디렉션을 수동 처리하며, 브라우저에서는 불투명 응답을 받을 수 있습니다. 리디렉션을 켜더라도 메서드 변경과 인증 정보 전달은 라이브러리 동작에 따릅니다. 실제 실행 환경에서 확인해야 합니다.

이름이 같은 폼 필드도 유지하기

두 개의 tag 값을 모두 본문에 남깁니다. --data-urlencode로 공백을 인코딩한 뒤 완성된 문자열을 Requests에 전달하므로, 딕셔너리의 중복 키 때문에 값이 덮어써지는 문제를 피합니다.

curl 'https://example.com/api/tags' --data-urlencode 'tag=cloud hosting' --data-urlencode 'tag=linux'
import requests

url = "https://example.com/api/tags"
headers = {
    "Content-Type": "application/x-www-form-urlencoded"
}
body = "tag=cloud%20hosting&tag=linux".encode("utf-8")

response = requests.request(
    method="POST",
    url=url,
    headers=headers,
    data=body,
    allow_redirects=False,
    verify=True,
)
print(response.status_code)
print(response.text)

curl 옵션은 어떻게 변환되나요?

입력 옵션변환 방식
URL / --url완전한 HTTP 또는 HTTPS URL 하나
-X / --request명시적으로 지정한 HTTP 메서드
-H / --header이름과 값. 중복 및 빈 헤더 지시문은 확인 필요
-d / --data / --data-raw / --data-binary인라인 본문. 여러 데이터 인수의 순서 유지
--data-urlencode / -G값 인코딩. -G 사용 시 URL 쿼리로 이동
--jsonJSON 텍스트 유지 및 기본 JSON 헤더 추가
-u / --userusername:password 형식의 Basic 인증
-L / -I / -k리디렉션, HEAD, TLS 검증. Fetch는 -k 지원 안 함
-b / -A / -eCookie, User-Agent, Referer에는 브라우저 제약 적용
--compressed / -s / -S / -v / -i대상 라이브러리로 압축 해제. 터미널 표시 형식은 재현하지 않음

자주 묻는 질문

붙여넣으면 서버에 요청이 전송되나요?

아니요. 브라우저에서 텍스트를 분석해 코드만 생성합니다. URL 접속이나 인증 확인은 하지 않으며, 생성 코드를 실행할 때 요청이 전송됩니다.

개발자 도구의 Copy as cURL을 사용할 수 있나요?

POSIX 형식의 단일 요청이며 지원 옵션을 사용한다면 가능합니다. bash 형식을 선택하세요. 미지원 옵션은 무시하지 않고 오류로 표시하므로 의미를 확인한 뒤 수정해야 합니다.

JSON의 큰 정수도 그대로 유지되나요?

JSON 본문을 문자열로 유지하므로 이 변환 단계에서 숫자 정밀도나 중복 키를 변경하지 않습니다. --json은 JSON 유효성 검사 기능이 아닙니다.

Fetch 코드에서 헤더가 빠진 이유는 무엇인가요?

브라우저 관리 헤더는 제외하고 안내에 표시합니다. Content-Length는 HTTP 라이브러리가 다시 계산합니다. 해당 헤더가 꼭 필요하면 Python이나 PHP를 선택해 확인하세요.

다운로드한 코드를 공유해도 되나요?

입력에 포함된 토큰, 비밀번호, 쿠키가 코드에도 남을 수 있습니다. 공유 전에 검토하고 프로젝트의 인증 정보 관리 방식에 맞게 수정하세요. Requests는 환경의 프록시와 .netrc 설정을 사용할 수 있습니다.

참고 문서: curl · Requests · Fetch