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

HTTPie·Postman·Insomnia — 목적에 맞는 API 도구 고르기

~9 min · production, httpie, postman, insomnia, gui-clients

Level 0HTTP 입문자
0 XP0/46 lessons0/12 achievements
0/120 XP to next level120 XP to go0% complete
"요청 하나의 실제 HTTP 교환을 조사할 때는 curl이 강해. API를 탐색하고 요청을 저장하며 팀과 공유하려면 그 목적에 맞는 도구가 더 편할 수 있어. 도구마다 잘하는 일이 다르지."

HTTPie — JSON API에 편한 명령줄 클라이언트

HTTPie는 사람이 읽고 쓰기 쉬운 문법과 JSON 친화적인 기본값을 제공하는 명령줄 HTTP 클라이언트야. 데이터 항목을 사용하면 JSON 요청을 간결하게 만들고, 터미널에서는 응답을 색상과 들여쓰기로 보기 좋게 표시해. Homebrew나 pip 등 환경에 맞는 방법으로 설치해 사용할 수 있어.

# curl POST + JSON 의 httpie 등가
http POST https://api.example.com/users name=Pippa email=pippa@example.com

# Auth + header + JSON body
http POST https://api.example.com/users \
  Authorization:'Bearer abc' \
  Content-Type:'application/json' \
  name=Pippa

# Query param 가진 GET
http GET https://api.example.com/users role==admin status==active

문법의 구분이 중요해. key=value는 문자열 JSON 필드, key==value는 쿼리 매개변수, Header:value는 요청 헤더를 뜻해. 숫자나 불리언처럼 문자열이 아닌 JSON 값에는 별도의 형식이 필요해. 간단한 JSON 요청을 자주 입력한다면 curl보다 짧고 읽기 쉬울 수 있지만, curl과 옵션 및 동작이 완전히 같지는 않아.

Postman — 공유 가능한 API 작업 공간

Postman은 요청을 저장하고 변수화해 탐색, 협업, 검증에 활용하는 데 초점을 둔 데스크톱·웹 기반 API 클라이언트야. 요청 컬렉션을 중심으로 다음 기능을 조합할 수 있어:

  • 컬렉션 — 관련 요청을 폴더로 구성하고 공통 인증, 변수, 스크립트를 적용해.
  • 환경 — 개발, 스테이징, 운영처럼 대상에 따라 바뀌는 값의 집합이야. 요청에서는 {{base_url}}, {{token}}처럼 참조해.
  • 검증 — JavaScript로 상태 코드, 헤더, 본문 구조 등을 검사할 수 있어. 컬렉션을 Newman이나 지원되는 Postman CLI 실행 경로에 연결하면 CI에서도 돌릴 수 있어.
  • 모의 서버 — 명세나 예시 응답을 바탕으로 실제 서버가 준비되기 전 호출 대상을 제공할 수 있어.
  • 문서화 — 컬렉션의 요청, 설명, 예시를 바탕으로 공유 문서를 구성할 수 있어.

통합 개발, QA, 외부 API 조사처럼 요청을 반복하고 공유해야 할 때 특히 유용해. 다만 요금제와 동기화·협업 기능은 바뀔 수 있으므로 도입 시점의 제품 정책을 확인해야 해. 팀의 장기 자산이라면 컬렉션을 내보내 버전 관리하고, 특정 개인 계정이나 클라우드 작업 공간에만 남기지 않는 편이 안전해.

Insomnia — 또 다른 GUI 중심 선택지

Insomnia는 Kong이 제공하는 API 클라이언트로, 요청 컬렉션과 환경 변수, 인증 설정을 GUI에서 관리할 수 있어. Postman과 겹치는 기능이 많지만 인터페이스와 작업 흐름, 동기화 방식, 자동화 도구가 다르므로 실제 팀 요구에 맞춰 비교해야 해. 제품 기능과 라이선스 범위는 버전에 따라 달라질 수 있어.

주요 활용 영역은 다음과 같아:

  • 스키마를 참고하며 GraphQL 쿼리를 작성하고 실행해.
  • 지원되는 환경에서 gRPC 서비스를 GUI로 호출해.
  • OpenAPI/Swagger 문서를 가져와 요청 작업 공간을 초기화해.
  • 인증과 요청 처리 기능을 확장할 때 지원되는 플러그인이나 기본 기능을 활용해.

연결 패턴: GUI에서 탐색하고 CI에서 재현하기

GUI에서 API를 탐색해 동작하는 요청을 컬렉션에 저장한 다음, Postman 컬렉션은 Newman 같은 실행기로 CI에서 반복할 수 있어. Insomnia도 선택한 버전과 지원 도구에 맞는 자동화 경로를 확인해야 해. GUI와 CLI는 변수 범위, 비밀값 공급, 스크립트 런타임, 인증서, 도구 버전이 다를 수 있으므로 단순히 "같은 요청"이라고 가정하지 말고 CI에서 결과를 검증해야 해. 컬렉션과 테스트는 버전 관리하고 비밀값은 CI의 비밀 저장소에서 주입하는 것이 기본이야.

HTTP 교환을 세밀하게 조사할 때는 curl, JSON 요청을 빠르게 작성할 때는 HTTPie, 요청을 저장하고 공유할 때는 Postman이나 Insomnia가 잘 맞아. 도구의 무게보다 재현성과 팀의 운영 방식이 더 중요해. 일회성 확인에 거대한 작업 공간을 만들 필요도 없고, 공유해야 할 수십 개의 요청을 셸 기록에만 남겨서도 안 돼.

cwkPippa의 도구 선택

cwkPippa처럼 로컬 FastAPI 백엔드를 빠르게 확인할 때는 curl이 간결하고, /docs에서 자동 생성되는 Swagger UI는 엔드포인트를 살펴보고 매개변수를 채워 직접 호출하는 브라우저 기반 탐색기로 쓸 수 있어. 이 화면은 OpenAPI 문서를 바탕으로 동작하지만, 저장된 팀 컬렉션과 CI 검증을 자동으로 대신하지는 않아. 반복 가능한 통합 검사가 필요해지면 컬렉션 기반 도구를 도입하거나 코드 수준의 API 테스트를 추가하는 식으로 목적에 맞는 계층을 선택해야 해.

Code

HTTPie — JSON 친화적인 간결한 문법·bash
# httpie cheat sheet (curl 와 비교)

# 한 번 설치
brew install httpie  # 혹은 pip install httpie

# Query param 가진 GET
http GET https://api.example.com/users role==admin

# JSON POST (자동 감지)
http POST https://api.example.com/users name=Pippa email=pippa@example.com

# Custom header (colon, -H 아님)
http GET https://api.example.com/me Authorization:'Bearer abc'

# stdin 에서 raw body 보내기
echo '{"name":"Pippa"}' | http POST https://api.example.com/users

# Binary download
http --download https://example.com/file.zip
Postman — JavaScript 응답 검사와 변수 연결·javascript
// Postman test snippet — response 에 assert
pm.test('200 돌려줌', () => {
  pm.response.to.have.status(200);
});

pm.test('body 에 user id 있음', () => {
  const body = pm.response.json();
  pm.expect(body.id).to.be.a('string');
  pm.expect(body.id).to.match(/^u_/);
});

pm.test('response time 500ms 아래', () => {
  pm.expect(pm.response.responseTime).to.be.below(500);
});

// Request chaining 위한 Postman 변수
const id = pm.response.json().id;
pm.environment.set('last_user_id', id);  // 다음 request 에 {{last_user_id}} 로 가용
Newman — Postman 컬렉션을 CI에서 실행·bash
# Newman — CI 의 Postman collection
npm install -g newman
newman run my-collection.postman_collection.json \
  --environment production.postman_environment.json \
  --reporters cli,junit \
  --reporter-junit-export results.xml

# CI 가 results.xml 써서 test pass/fail surface.
# 인터랙티브 돌린 같은 request 가 이제 자동 test gate.

External links

Exercise

HTTPie를 설치하고(brew install httpie) 자주 쓰는 curl 명령 세 개를 HTTPie 문법으로 다시 작성해 가독성과 실제 요청 결과를 비교해 봐. FastAPI 애플리케이션이 있다면 /docs에서 POST 엔드포인트 하나를 실행하고, 자동 생성된 Swagger UI가 수동 탐색에 제공하는 범위를 확인해. 보너스로 Postman이나 Insomnia에서 {{base_url}}{{token}} 변수를 사용하는 요청 3~5개를 저장하고, 요청 자체를 고치지 않은 채 개발 환경과 테스트 환경을 전환해 봐. 실제 운영 토큰은 사용하지 마.
Hint
HTTPie에서는 name=Pippa age:=25{"name":"Pippa","age":25} 형태의 JSON으로 전송돼. :=는 숫자나 불리언처럼 문자열이 아닌 JSON 값을 표현할 때 사용해. /docs는 한 서비스의 빠른 탐색에 좋고, Postman이나 Insomnia의 변수는 반복 요청과 환경 전환에 좋아. 어떤 도구를 쓰든 실제 전송된 메서드, URL, 헤더, 본문이 같은지 확인하고 비밀값은 별도로 관리해야 해.

Progress

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

댓글 0

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

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