Httpie: 무엇인가, 명령줄용 HTTP 클라이언트

저자: IT Sectr 게시일: 2026-05-08 읽는 시간: 8 분

Httpie는 사람이 읽기 쉬운 구문과 색상 출력을 갖춘 콘솔 HTTP 클라이언트로, 명령줄에서 API를 테스트하도록 설계되었습니다. 이 도구는 직관적인 구문을 사용합니다: http GET https://api.example.com/users — 헤더와 요청 본문에 플래그를 지정할 필요가 없습니다. Httpie CLI Documentation (2026)에 따르면 이 유틸리티는 기본적으로 JSON, 세션, 인증, 플러그인을 지원합니다.

핵심 사항

  • Httpie는 읽기 쉬운 구문, 색상 강조, 내장 JSON 직렬화를 갖춘 cURL의 현대적인 대체 도구입니다.
  • 구문 요청은 http [method] URL [header:value] [key=value] 체계로 구성되며 추가 플래그가 필요 없습니다.
  • 기본적으로 JSON — 요청 본문은 JSON 객체로 처리되고 Content-Type 헤더가 자동으로 설정됩니다.
  • 세션은 요청 간에 쿠키와 헤더를 유지하므로 인증된 엔드포인트를 테스트하는 데 편리합니다.
  • 플러그인은 추가 형식, 인증 유형, 사용자 지정 전송 지원으로 Httpie를 확장합니다.

Httpie란 무엇이며 cURL과 어떻게 다른가

Httpie(또는 HTTPie)는 cURL에 비해 HTTP 요청 전송을 단순화하는 Python으로 작성된 명령줄 유틸리티입니다. 주요 차이점은 자연어에 가까운 구문입니다: 인수는 공백으로 구분되고, 헤더는 콜론으로 지정되며, JSON 데이터는 따옴표를 이스케이프하지 않고 등호로 지정됩니다.

cURL과 Httpie 비교

cURL에서 동일한 POST 요청에는 최소 3개의 플래그(-X, -H, -d)와 수동 JSON 이스케이프가 필요합니다. Httpie는 플래그 없이 세 단어로 동일한 작업을 수행하며 자동으로 Content-Type: application/json을 설정하고 출력을 강조합니다. 응답은 기본적으로 들여쓰기와 구문 강조로 형식화됩니다.

작업cURLHttpie
GET 요청curl https://api.example.comhttp GET https://api.example.com
POST JSONcurl -X POST -H "Content-Type: application/json" -d '{"name":"test"}' https://api.example.comhttp POST https://api.example.com name=test
헤더curl -H "Authorization: Bearer token123" https://api.example.comhttp GET https://api.example.com Authorization:"Bearer token123"

Httpie의 요청 구문

Httpie는 주요 매개변수에 플래그를 사용하지 않는 단일 명령줄 형식을 사용합니다. HTTP 메서드는 첫 번째 인수(GET, POST, PUT, DELETE, PATCH)로 지정되고 URL은 두 번째로 지정됩니다. 메서드를 생략하면 Httpie는 자동으로 GET(본문 없는 요청) 또는 POST(본문 포함)를 선택합니다.

인수 유형

  • Header:Value — 콜론이 있는 요청 헤더로, 콜론 뒤에 공백이 없습니다: Authorization:"Bearer token".
  • key=value — 요청 본문의 JSON 객체 필드: name=John age=30.
  • key:=value — 문자열이 아닌 JSON 값(숫자, 불리언, 배열): active:=true tags:=["dev","test"].
  • key@file — 파일에서 값 로드: avatar@~/photo.jpg.

Httpie는 데이터 유형을 자동으로 결정합니다: key=value가 전달되면 본문이 JSON으로 전송됩니다. --raw로 원시 텍스트가 전달되면 일반 텍스트로 전송됩니다. form-data 형식은 -f 플래그로 활성화됩니다.

bash
# JSON 데이터와 헤더가 있는 POST 요청
http POST https://api.example.com/users \
    name="John Doe" \
    email="john@example.com" \
    role:="admin" \
    Authorization:"Bearer test123"

# 강조 및 Pretty-print가 있는 응답
HTTP/1.1 201 Created
Content-Type: application/json
{
    "id": 42,
    "name": "John Doe"
}

JSON 및 파일 작업

Httpie의 JSON 직렬화는 자동으로 작동합니다: key=value로 전달된 값은 JSON의 문자열 필드가 됩니다. 숫자와 불리언 값에는 key:=value를 사용합니다. 중첩 객체는 점 표기법으로 생성합니다: address.city=Moscow.

파일 및 바이너리 데이터 업로드

Httpie는 key@path 구문으로 파일과 데이터를 업로드하기 위한 multipart/form-data 형식을 지원합니다. 파일 내용을 요청의 원시 본문으로 보내려면 입력 리디렉션을 사용합니다: http POST example.com < file.json. 응답을 파일로 다운로드하려면 -d(download) 플래그를 사용합니다.

bash
# 파일에서 JSON 보내기
http POST https://api.example.com/users < user.json

# multipart로 파일 업로드
http -f POST https://api.example.com/upload \
    photo@~/photo.jpg \
    description="Profile photo"

세션 및 쿠키 관리

Httpie의 세션은 요청 간에 쿠키, 헤더, 인증 매개변수와 같은 상태를 유지합니다. 세션은 --session=name 플래그로 생성합니다. 세션 데이터는 ~/.httpie/sessions/ 폴더의 JSON 파일에 저장됩니다. :readonly 접미사가 있는 세션은 요청 후에 업데이트되지 않습니다.

세션 테스트 예시

먼저 자격 증명과 함께 /auth/login에 POST 요청을 보냅니다 — 서버가 세션 쿠키를 반환합니다. 동일한 세션 내의 보호된 엔드포인트에 대한 이후의 모든 요청은 저장된 쿠키를 자동으로 보내며, 이는 모바일 앱의 API를 테스트할 때 브라우저의 동작을 시뮬레이션합니다.

bash
# 1단계: 인증
http --session=app-test POST https://api.example.com/auth/login \
    username="dev" password="secret"

# 2단계: 저장된 세션 쿠키가 있는 요청
http --session=app-test GET https://api.example.com/users/me

인증 및 헤더

Httpie는 플래그를 통해 모든 주요 인증 유형을 지원합니다: Basic Auth용 -a user:pass, Digest용 --auth-type=digest, Bearer Token용 --auth-type=bearer TOKEN. 사용자 지정 헤더는 HeaderName:value로 명령의 어느 위치에나 추가됩니다.

OAuth 2.0 및 Bearer Token

OAuth 2.0을 사용하는 API를 테스트하려면 Authorization 헤더를 통해 토큰을 전달합니다. Httpie는 코어 수준에서 토큰 수명 주기를 관리하지 않습니다 — 이는 외부 스크립트가 수행합니다. http --auth-type=bearer --auth="$TOKEN" GET https://api.example.com/resource 명령은 토큰이 있는 헤더를 명시적으로 지정하는 것과 같습니다.

CI/CD 스크립트에서 Httpie 사용

Httpie는 종속성 없음(Python 제외)과 읽기 쉬운 출력 덕분에 CI/CD 파이프라인에 이상적입니다. 명령은 추가 파싱 없이 로그에서 쉽게 읽을 수 있습니다. 이 도구는 pip로 설치되며 Alpine, Ubuntu, Jenkins와 GitLab의 공식 CI 이미지를 포함한 모든 인기 Docker 이미지에서 사용할 수 있습니다. 이는 Httpie를 REST API와 마이크로서비스의 자동화된 테스트에 편리한 선택으로 만듭니다.

배포 시 health 엔드포인트 확인

일반적인 시나리오는 애플리케이션 배포 후 API 상태를 확인하는 것입니다. Httpie는 health 엔드포인트에 요청을 보내고 응답이 예상과 다르면 0이 아닌 코드로 종료됩니다. --check-status 플래그는 상태 코드가 300 이상이면 자동으로 오류를 반환합니다.

bash
# 배포 스크립트에서 health check
http --check-status GET https://api.staging.example.com/health
    status:="ok" && \
    echo "API가 정상입니다" || \
    echo "API 확인 실패"

Httpie의 고급 기능 및 플러그인

Httpie는 Package Index 시스템을 통해 플러그인을 지원합니다. 플러그인은 새 인증 유형, 직렬화 형식, 전송을 추가합니다. 설치 방법은 pip입니다: pip install httpie-plugin-name. 설치 후 플러그인은 다음 Httpie 실행 시 자동으로 활성화됩니다.

인기 있는 Httpie 플러그인

  • httpie-jwt-auth — refresh token 메커니즘을 통한 JWT 토큰의 자동 획득 및 갱신.
  • httpie-oauth — 토큰에 대한 자동 코드 교환을 통한 OAuth 2.0 Client Credentials 및 Authorization Code 흐름 지원.
  • httpie-editor — 전송 전에 요청 본문을 텍스트 편집기(vim, nano, VS Code)에서 엽니다.
  • httpie-image — 응답의 이미지를 터미널에 직접 표시합니다(kitty 또는 iTerm2 필요).

스크립팅 및 출력 파싱

Httpie는 --pretty=format 옵션을 통한 jq 유사 필터링과 --print를 통한 cURL 호환 출력을 지원합니다. --quiet 플래그는 CI 로그에서 가독성을 높이기 위해 색상 출력을 비활성화합니다. 응답을 프로그래밍 방식으로 처리하려면 --body 플래그를 사용하세요. 이 플래그는 헤더 없이 응답 본문만 출력합니다.

bash
# jq로 JSON 응답에서 필드 추출
http GET https://api.example.com/users/1 | jq '.name'

# 응답 본문만 출력(헤더 없음)
http --body GET https://api.example.com/health

# 파일에서 다른 데이터로 일괄 전송
while read -r line; do
    http POST https://api.example.com/items $line
done < items.txt

출력 형식 및 사용자 지정

Httpie는 --print 플래그를 통해 출력 형식을 지원합니다: H(요청 헤더), B(요청 본문), h(응답 헤더), b(응답 본문). --print=hb 조합은 응답 헤더와 본문만 출력합니다. --pretty=all 플래그는 들여쓰기가 있는 색상 형식을 활성화합니다.

사용자 지정 색 구성표

Httpie는 HTTPIE_COLORS 변수를 통한 사용자 지정을 지원합니다. URL, 헤더, JSON, 상태 코드의 색상을 구성합니다. 다양한 터미널용 내장 테마를 사용할 수 있습니다: autumn, borland, fruity, monokai, native, tango.

JSON 형식으로 출력

프로그래밍 방식 처리를 위해 --body --pretty=none을 사용하세요. 이는 원시 JSON을 반환합니다. 컴팩트한 출력은 스크립트에서 API 테스트를 자동화할 때 jq, sed 등의 파서에 전달하는 데 유용합니다.

출력 형식 및 표시 사용자 지정

Httpie는 --print 플래그를 통해 여러 출력 형식을 지원합니다: H(요청 헤더), B(요청 본문), h(응답 헤더), b(응답 본문). --print=hb 조합은 연결의 메타 정보를 제외하고 응답 헤더와 본문만 출력합니다. --pretty=all 플래그는 가독성을 위해 들여쓰기가 있는 색상 형식을 활성화합니다.

사용자 지정 색 구성표

Httpie는 환경 변수 HTTPIE_COLORS를 통한 색상 사용자 지정을 지원합니다. URL, 헤더, JSON 키, 응답 상태 코드의 색상을 구성할 수 있습니다. 다양한 터미널 유형과 개인 취향에 맞는 내장 테마가 있습니다: autumn, borland, fruity, monokai, native, tango.

형식 없이 JSON 형식으로 출력

출력의 프로그래밍 방식 처리를 위해 --body --pretty=none 플래그 조합을 사용하세요. 이는 색상과 들여쓰기 없이 원시 JSON을 반환합니다. 컴팩트한 출력은 셸 스크립트에서 REST API 테스트를 자동화할 때 jq, sed 등 콘솔 파서에 전달하는 데 유용합니다.

자주 묻는 질문

표준 cURL보다 Httpie가 나은 이유는 무엇인가요?

Httpie는 기본 작업에 플래그가 필요 없는 더 읽기 쉬운 구문, 자동 JSON 직렬화, 응답의 색상 강조, 내장 세션 지원을 제공합니다. cURL은 FTP, SMTP, 비표준 프로토콜 작업과 같은 저수준 작업에 여전히 필수적입니다.

Httpie로 form-data를 보내려면 어떻게 하나요?

-f 플래그(또는 --form)를 사용하세요: http -f POST example.com name=John file@~/photo.jpg. Httpie가 자동으로 Content-Type: multipart/form-data를 설정합니다. -f 플래그가 없으면 데이터는 application/json으로 전송됩니다.

Httpie는 HTTPS와 인증서를 지원하나요?

예, Httpie는 HTTPS를 지원합니다. 자체 서명 인증서에는 --verify=no 플래그를 사용하세요. 사용자 지정 CA 파일을 지정하려면: --verify=/path/to/cert.pem. 기본적으로 인증서 검증이 활성화되어 있습니다.

WebSocket에 Httpie를 사용할 수 있나요?

아니요, Httpie는 WebSocket을 지원하지 않으며 HTTP/HTTPS 프로토콜 전용입니다. WebSocket에는 websocat 또는 wscat을 사용하세요. Httpie는 REST, GraphQL, 파일 작업에 중점을 둡니다.

Httpie로 응답을 파일에 저장하려면 어떻게 하나요?

-d(download) 플래그를 사용하세요: http -d GET https://example.com/file.zip. Httpie는 Content-Disposition 헤더 또는 URL의 원래 이름으로 파일을 저장합니다. 사용자 지정 이름은 -o output.zip으로 지정합니다.

요약

  • Httpie — 직관적인 구문, 기본 JSON, 색상 출력을 갖춘 콘솔 HTTP 클라이언트.
  • 기본 구문 http [method] URL [key=value] [Header:value]는 대부분의 요청에 플래그가 필요하지 않습니다.
  • JSON 직렬화는 자동입니다: key=value는 JSON 필드가 되고 숫자와 불리언 값에는 key:=value를 사용합니다.
  • 세션은 인증된 엔드포인트를 테스트하기 위해 요청 간에 쿠키와 헤더를 유지합니다.
  • 인증은 --auth-type 플래그를 통해 Basic, Digest, Bearer 및 사용자 지정 스킴을 지원합니다.
  • CI/CD 통합 — --check-status와 종속성 없음으로 Httpie가 배포 스크립트에 편리합니다.
  • 파일 업로드 — -f 플래그와 key@file 구문을 사용한 multipart form-data 경유.

턴키 방식의 모바일 애플리케이션을 개발해 드립니다

IT Sectr는 2017년부터 스타트업과 기업을 위한 iOS 및 Android 애플리케이션을 만듭니다. 저희가 상담해 드리고 최적의 솔루션을 제안하겠습니다.

프로젝트 논의

더 읽어보기