실제 백엔드를 구축하지 않고 HTTP 클라이언트를 테스트해야 했다면 아마 httpbin을 접했을 것입니다. httpbin은 요청을 다시 그대로 반환하여 코드가 정확히 무엇을 보냈는지 확인할 수 있게 해주는 작은 웹 서비스입니다. 덕분에 헤더를 디버깅하거나, 클라이언트가 500 오류를 어떻게 처리하는지 확인하거나, 인증 토큰이 실제로 요청에 포함되었는지 확인하는 데 완벽합니다. 순수한 curl 명령어부터 Apidog와 같은 전체 클라이언트에 이르기까지 모든 도구를 httpbin에 연결할 수 있습니다. 이 프로젝트는 httpbin.org에서 호스팅되며 ISC 라이선스 하에 오픈 소스로 제공됩니다.
httpbin이란 무엇인가요?
httpbin은 HTTP 요청 및 응답 서비스입니다. 요청을 보내면, 해당 요청에 대한 JSON 설명을 다시 보내줍니다. 그 이상은 없습니다. 인기 있는 Python requests 라이브러리의 개발자인 Kenneth Reitz가 만들었으며, Flask를 사용하여 Python으로 작성되었습니다.
그 가치는 단순성에 있습니다. 예를 들어, HTTP 클라이언트가 User-Agent 헤더를 올바르게 설정하는지 알고 싶다고 가정해 봅시다. https://httpbin.org/headers를 호출하면 서버가 받은 모든 헤더 목록이 응답으로 나타납니다. 데이터베이스도, 로그인도, 설정도 필요 없습니다. 자신의 요청에 대한 깨끗한 미러를 얻을 수 있습니다.
httpbin.org는 공개 인스턴스로, 빠른 확인에 편리합니다. 무료 공유 서비스이기 때문에 느리거나 일시적으로 사용 불가능할 수도 있습니다. 유지보수는 수년 동안 바뀌어 왔으며, 현재 코드는 postmanlabs/httpbin GitHub 저장소에 있으며, Kong과 같은 커뮤니티 포크도 존재합니다. 자주 실행하는 모든 작업에는 자체 호스팅이 더 안전한 방법입니다. 자세한 내용은 아래를 참조하십시오.
주요 httpbin 엔드포인트
httpbin은 다양한 테스트 유형을 위한 엔드포인트 세트를 노출합니다. 가장 자주 사용하게 될 엔드포인트는 다음과 같습니다.
| 엔드포인트 | 기능 |
|---|---|
/get |
GET 요청의 쿼리 인수, 헤더 및 원본 IP 반환 |
/post |
POST하는 양식 데이터, JSON 본문 및 헤더 반환 |
/put, /patch, /delete |
다른 HTTP 메서드에 대해서도 동일 |
/status/{codes} |
요청한 상태 코드 반환 (예: /status/404 또는 /status/503) |
/headers |
서버가 받은 요청 헤더만 반환 |
/ip |
원본 IP 주소 반환 |
/user-agent |
클라이언트가 보낸 User-Agent 문자열 반환 |
/delay/{n} |
응답 전 n초 대기 (최대 10초), 타임아웃 테스트용 |
/basic-auth/{user}/{passwd} |
일치하는 Basic Auth 자격 증명을 보내야만 200 반환 |
/bearer |
Authorization 헤더에서 Bearer 토큰 확인 |
/redirect/{n} |
리디렉션 처리 테스트를 위해 n번 리디렉션 |
/cookies |
클라이언트가 보낸 쿠키 반환 |
/uuid |
랜덤 UUID 반환 |
/anything |
사용하는 메서드와 관계없이 요청에 대한 모든 정보 반환 |
/status/{codes} 및 /delay/{n} 엔드포인트는 여기에서 숨은 영웅입니다. 이들을 통해 실제 API에서 트리거하기 어려운 오류 경로와 느린 응답을 필요에 따라 강제할 수 있습니다. 에코가 아닌 가짜 응답 본문을 생성하려면 httpbin을 테스트 데이터용 가짜 API와 함께 사용하십시오.
httpbin을 사용하여 클라이언트를 테스트하는 방법
httpbin을 가장 빠르게 사용해 보는 방법은 curl을 사용하는 것입니다. 쿼리 파라미터와 함께 GET 요청을 보냅니다:
curl "https://httpbin.org/get?tool=apidog&check=headers"
args, 서버가 받은 headers, 그리고 origin IP를 보여주는 JSON 객체를 받게 됩니다. 이는 클라이언트가 예상한 것을 보냈음을 확인해 줍니다.
코드가 POST 본문을 어떻게 처리하는지 테스트하려면 JSON을 보냅니다:
curl -X POST "https://httpbin.org/post" \
-H "Content-Type: application/json" \
-d '{"name": "widget", "qty": 3}'
httpbin은 파싱된 json, 원시 data, 그리고 헤더를 에코하므로, Content-Type과 페이로드가 손상 없이 전달되었는지 확인할 수 있습니다.
이제 오류를 강제하여 재시도 로직을 테스트합니다:
curl -i "https://httpbin.org/status/503"
실제 503 Service Unavailable 응답을 받게 됩니다. 클라이언트의 오류 처리를 여기에 연결하여 재시도하거나 정상적으로 실패하는지 확인하십시오. /delay/5로 바꾸어 느린 엔드포인트를 시뮬레이션하고 타임아웃 설정을 확인합니다.
터미널에만 머무를 필요는 없습니다. 모든 REST 클라이언트가 이와 동일한 URL을 호출할 수 있습니다. 그래픽 워크플로우를 선호한다면 https://httpbin.org/get를 Apidog에 붙여넣고, 요청을 보내고, 구문 강조, 저장된 기록 및 환경 변수를 사용하여 응답을 검사하십시오. 이는 환경 간 응답을 비교하거나 팀원과 테스트를 공유할 때 유용합니다. 터미널 우선 설정의 경우, 이 TUI REST API 클라이언트들을 참조하십시오.
Docker를 이용한 httpbin 자체 호스팅
공개 httpbin.org 인스턴스는 일회성 확인에 적합하지만, 필요할 때 속도 제한에 걸리거나 다운될 수 있습니다. 자체 사본을 실행하면 이러한 문제를 해결하고 테스트 트래픽을 비공개로 유지할 수 있습니다. 공식 Docker 이미지를 사용하면 두 가지 명령으로 이 작업을 수행할 수 있습니다.
이미지를 가져와 실행합니다:
docker pull kennethreitz/httpbin
docker run -p 80:80 kennethreitz/httpbin
이제 서비스는 80번 포트에서 수신 대기합니다. http://localhost/get으로 호출하면 공개 사이트와 동일한 동작을 얻을 수 있으며, 네트워크 지연이나 공유 속도 제한이 없습니다. 이는 안정성이 중요하고 외부 서비스에 의존하고 싶지 않은 CI 파이프라인에서 원하는 설정입니다. 이 이미지는 Docker Hub에서 kennethreitz/httpbin으로 게시됩니다.
머신에서 80번 포트가 사용 중인 경우, 다른 호스트 포트를 매핑하십시오(예: docker run -p 8080:80 kennethreitz/httpbin). 그런 다음 http://localhost:8080/get을 사용합니다.
httpbin 대안
httpbin은 한 가지 일을 잘 하지만, 유일한 옵션은 아니며 완전한 테스트 플랫폼도 아닙니다. 필요한 것에 따라 솔직한 대안을 제시합니다.
Postman Echo. Postman에서 운영하는 httpbin과 유사한 호스팅 에코 서비스입니다. https://postman-echo.com/get으로 요청을 보내면 요청이 그대로 반환됩니다. GET, POST, 인증 및 유틸리티 엔드포인트를 지원합니다. 전체 목록은 Postman Echo 문서를 참조하십시오. httpbin.org가 다운되었을 때 Echo는 견고한 대체재입니다.
자체 호스팅 httpbin. 위에서 설명했듯이, Docker 이미지를 실행하면 완전한 제어와 공유 제한 없이 동일한 엔드포인트를 사용할 수 있습니다. 이는 프라이빗 네트워크 또는 CI 작업 내에서 httpbin 동작이 필요할 때 가장 좋은 선택입니다.
모의 서비스. httpbin은 요청을 에코합니다. 현실적인 도메인 데이터를 반환하지는 않습니다. 가짜이지만 구조화된 응답(사용자 목록, 주문 객체, 페이지네이션된 결과)이 필요할 때는 대신 모의 서버를 사용하십시오. Apidog에는 스키마에서 현실적인 응답을 생성하는 내장 스마트 모킹 기능이 있어 백엔드가 존재하기 전에도 프론트엔드가 엔드포인트를 기반으로 개발할 수 있습니다.
Apidog를 클라이언트 및 테스트 레이어로 사용. httpbin은 요청을 보내는 대상입니다. Apidog는 요청을 보내는 도구입니다. Apidog는 완전한 API 클라이언트 및 테스트 플랫폼입니다. 엔드포인트를 설계하고, 요청을 보내고, 어설션을 작성하고, 요청을 시나리오로 연결하고, CI에서 실행합니다. Apidog를 사용하여 httpbin을 호출하거나, 간단한 에코 이상의 요구 사항이 있을 때 httpbin을 대체할 수 있습니다. 둘은 동등하지 않습니다. httpbin은 작은 서비스이고, Apidog는 그 주변의 작업대입니다. 즉흥적인 curl 호출에서 저장되고 반복 가능한 테스트로 전환할 준비가 되면, Apidog를 통해 기존 요청을 가져오고 어설션을 추가할 수 있습니다. 설치가 필요 없는 옵션에 대한 더 넓은 조사를 원하시면 무료 온라인 API 테스트 도구를 참조하십시오.
FAQ
httpbin은 무료로 사용할 수 있나요? 네. 공개 httpbin.org 인스턴스는 무료이며 계정이 필요하지 않습니다. 소스는 ISC 라이선스 하에 오픈되어 있으므로 비용 없이 직접 실행할 수도 있습니다.
httpbin은 여전히 유지보수되나요? 코드 베이스는 postmanlabs/httpbin GitHub 저장소에 있으며, 유지보수가 간헐적이지만 지속적인 관심을 받고 있습니다. httpbin.org가 불안정할 수 있으므로 많은 팀에서는 중요한 작업을 위해 자체 호스팅 Docker 사본을 고정하여 사용합니다.
httpbin을 사용하여 웹훅을 테스트할 수 있나요? 그렇지는 않습니다. httpbin은 사용자에게 보낸 요청을 에코하지만, 제3자로부터 이벤트를 받아 로컬 머신으로 전달하지는 않습니다. 이를 위해서는 전용 터널링 또는 검사 서비스를 사용하십시오. localhost API 및 웹훅 테스트에 대한 가이드와 웹훅 작동 방식에 대한 입문서를 참조하십시오.
httpbin과 Postman Echo의 차이점은 무엇인가요? 거의 동일한 기능을 수행합니다. HTTP 요청을 JSON으로 다시 에코합니다. httpbin은 원래의 오픈 소스 Python 및 Flask 서비스이고, Postman Echo는 Postman에서 제공하는 호스팅 서비스입니다. 사용 가능한 것 중 어떤 것이든 선택하면 됩니다.
httpbin으로 오류 처리를 테스트할 수 있나요? 네. /status/{code}를 사용하여 /status/500 또는 /status/429와 같은 모든 상태 코드를 강제하고, /delay/{n}을 사용하여 느린 응답을 시뮬레이션할 수 있습니다. 이는 클라이언트의 재시도 및 타임아웃 로직을 실행하는 가장 깔끔한 방법입니다.
마무리
httpbin은 작고 날카로운 도구입니다. HTTP 클라이언트를 httpbin에 연결하면 요청이 그대로 반영됩니다. /get 및 /post를 사용하여 보내는 내용을 확인하고, /status 및 /delay를 사용하여 오류 경로를 강제하며, Docker 이미지를 사용하여 CI에서 비공개 사본을 실행하십시오. 에코 이상의 기능이 필요할 때는 현실적인 모의(mock) 데이터, 저장된 테스트 스위트 및 어설션을 활용하십시오.
이것이 바로 완전한 플랫폼이 빛을 발하는 곳입니다. Apidog는 httpbin을 호출하는 API 클라이언트, httpbin을 대체하는 스마트 모킹, 그리고 방금 확인한 동작을 고정하는 자동화된 테스트를 제공합니다. Apidog를 다운로드하고 빠른 httpbin 확인을 반복 가능한 테스트로 전환하십시오.
