본문 바로가기
C.W.K.
Stream
Lesson 06 of 08 · published

HTTPie: 더 친절한 HTTP

~8 min · httpie, http, alternative

Level 0창 구경꾼
0 XP0/95 lessons0/14 achievements
0/100 XP to next level100 XP to go0% complete

HTTPie가 잘 맞는 작업

curl은 자동화 환경에 널리 설치되어 있고, HTTPie는 사람이 API를 탐색할 때 짧은 문법과 읽기 좋은 JSON 출력을 제공해. macOS에서는 brew install httpie로 설치할 수 있어.

합리적 기본값

http https://api.github.com/users/cli
# = curl -sS -H 'Accept: application/json' https://...

HTTPie는 JSON에 맞는 Accept 헤더를 사용하고 구조와 색을 적용해 응답을 읽기 쉽게 보여 줘. 리다이렉트 정책은 옵션으로 명시해서 요청 의도를 드러내.

30초 안에 POST

http POST https://api.example/items name=sample qty:=3 active:=true

이 명령은 이름은 문자열로, 수량은 숫자로, 활성 상태는 불리언으로 담은 JSON을 POST해. :=는 숫자와 불리언 같은 JSON 값을 전달하고, =는 문자열을 전달해.

헤더·인증·파일 보내기

  • http GET https://... 'Authorization: Bearer xyz'
  • http -a user:pass GET https://...
  • http POST https://... < body.json: stdin의 파일을 본문으로.
  • http --download https://.../file.zip: 진행률 표시 + 파일명 자동.

세션

http --session=mysession POST https://api/login user=alice pass=...은 쿠키, 헤더와 기본 인증 정보를 세션에 저장해. 이후 요청에서도 같은 --session을 지정하면 상태를 재사용할 수 있어서 여러 단계의 API 흐름을 살피기 좋아.

curl이 여전히 이기는 곳

Python이 없는 작은 컨테이너, 성능이 중요한 반복 작업이나 이미 curl을 전제로 한 스크립트에서는 그대로 curl을 써. 대화형 탐색에서는 HTTPie의 기본 출력이 더 편할 수 있어.

친절한 출력 뒤의 원본도 볼 수 있어야 해

HTTPie의 색과 정렬은 사람이 읽기 좋지만 원시 바이트, 헤더 중복, 리다이렉트 연쇄을 분석할 때는 표현 층이 정보를 가릴 수 있어. 문제를 재현할 때는 상세 출력과 원시 출력, 실제 상태를 함께 저장해.

셸 편의 문법을 스크립트 프로토콜로 착각하지 마

name=value 같은 입력 표기는 클라이언트가 JSON 유형을 추론하는 규칙을 가져. 값이 문자열인지 숫자인지, 파일 업로드인지 버전별 문서를 확인하고 중요한 요청은 명시한 본문 파일과 Content-Type으로 재현해.

Code

비교·bash
# curl로 요청
curl -sS -X POST https://httpbin.org/post \
  -H 'Content-Type: application/json' \
  -d '{"name":"pippa","qty":3}'
# HTTPie로 요청
http POST https://httpbin.org/post name=sample qty:=3

External links

Exercise

brew install httpie로 HTTPie를 설치하고 공개 시험 API에 GET 요청을 보내 출력 형식을 살펴봐. 이어서 httpbin에 문자열, 숫자와 불리언 값을 담은 POST 요청을 보내 서버가 받은 JSON 타입이 의도와 맞는지 확인해.

Progress

Progress is local-only — sign in to sync across devices.
이 페이지에서 버그를 발견하셨거나 피드백이 있으세요?문제 신고

댓글 0

🔔 답글 알림 (로그인 필요)
로그인댓글을 남기려면 로그인해 주세요.

아직 댓글이 없어요. 첫 댓글을 남겨보세요.