--- title: xh — 모던 HTTP 클라이언트 date: 2026-01-19 time: 12:00 model: admin category: programs author_type: human summary: curl을 대체하는 친절한 HTTP CLI로, JSON·폼·인증·다운로드를 간결한 옵션으로 처리 tags: 프로그램, 모던 CLI 도구, xh --- **💬 "xh 명령어"** xh는 **curl을 대체하는 친절한 HTTP 명령줄 클라이언트**입니다. 복잡한 인자 없이 `xh example.com`처럼 쓰면 JSON·헤더·상태 코드를 읽기 좋은 형태로 바로 보여줍니다. Rust로 만들어졌으며, HTTPie 명령 스타일을 따르면서 더 빠르고 가볍습니다. 리다이렉트 자동 추적, JSON·폼 전송, 인증, 다운로드를 간결한 옵션으로 처리합니다. - **개념**: 터미널에서 HTTP 요청을 보내고 응답을 보기 좋게 출력하는 클라이언트입니다. - **주요 기능**: JSON/폼 전송, 인증, 헤더 지정, 리다이렉트 추적, 파일 다운로드를 지원합니다. - **장점**: curl처럼 인자를 외울 필요 없이 짧은 명령으로 API를 호출하고 결과를 확인합니다. - **활용**: REST API 점검, 웹 서비스 응답 확인, 인증 테스트에 사용합니다. ## 기본 사용법 xh는 기본이 GET이며, 인자로 키=값을 주면 자동으로 JSON으로 보냅니다. ### 1. 기본 요청 URL만 주면 GET 요청 결과를 예쁘게 보여줍니다. ``` xh example.com xh example.com/users/1 # JSON 응답 확인 ``` ### 2. 데이터 보내기 키=값을 주면 JSON POST가 됩니다. ``` xh POST example.com/users name=John age:=30 email:=null xh POST example.com login form==true username=admin password=secret ``` ### 3. 인증·헤더·다운로드 토큰·헤더·파일 처리를 간단히 합니다. ``` xh example.com Authorization:"Bearer TOKEN" xh --download example.com/file.zip xh -v example.com # 헤더까지 자세히 ``` ## 설치 및 다운로드 xh는 cargo·패키지 매니저·바이너리로 설치합니다. `xh`는 `http` 별칭도 제공합니다. | 환경 | 명령 | | --- | --- | | cargo | cargo install xh | | Ubuntu/Debian (패키지 있으면) | sudo apt install xh | | macOS (Homebrew) | brew install xh | | 릴리스 바이너리 | github.com/ducaale/xh/releases | 설치 확인은 `xh --version`. `http`·`https` 별칭을 쓰려면 설치 시 안내되는 심볼릭 링크를 만듭니다. ## 자주 쓰는 옵션 | 명령·키 | 설명 | | --- | --- | | POST/PUT/PATCH | HTTP 메서드를 지정합니다 | | 키:=값 | 숫자·배열·null 등 JSON 타입으로 보냅니다 | | 키==값 | 쿼리스트링( URL 파라미터)으로 보냅니다 | | --download | 응답을 파일로 저장합니다 | | -v | 요청·응답 헤더까지 자세히 표시합니다 | ## 필수 명령어 조합 3가지 - `xh example.com/api/health` — API 응답을 바로 확인 - `xh POST api/login username=admin` — 폼/JSON 로그인 요청 - `xh --download example.com/file.zip` — 파일 다운로드 **💬 "실제 서버에서 xh를 사용하는 예시"** 로컬 API를 점검하는 상황을 순서대로 정리했습니다. ### 1단계 · 서비스 응답 확인 서버가 살아있는지 확인합니다. ``` xh localhost:8080/health ``` ### 2단계 · 인증 요청 토큰을 넣어 인증 엔드포인트를 호출합니다. ``` xh localhost:8080/api/me Authorization:"Bearer TOKEN" ``` ### 3단계 · 결과 저장 응답을 파일로 남깁니다. ``` xh localhost:8080/api/list --download resp.json ``` ## 실무에서는 이렇게 씁니다 ### 1. 헬스체크 **상황** — 배포 후 서비스 상태를 확인합니다. ``` xh localhost:8080/health ``` **결과** — 상태 코드와 JSON 본문이 한눈에 보여 즉시 판단됩니다. **포인트** — curl 인자를 외우지 않고 빠르게 점검합니다. ### 2. 파라미터 테스트 **상황** — 쿼리 조건을 바꿔가며 확인합니다. ``` xh 'example.com/api/items?limit==5&sort==desc' ``` **결과** — 키==값으로 쿼리를 간단히 붙여 보냅니다. **포인트** — 여러 조합을 빠르게 시도해 API 동작을 확인합니다. ## 주의할 점 - URL에 `?`·`&`가 포함되면 따옴표로 감싸면 안전합니다. - 기본은 슬래시 없는 URL도 허용하지만, 정확한 경로를 쓰는 습관이 좋습니다. - 인증 토큰을 쓸 때 셸 히스토리에 남을 수 있으니 임시 파일·환경변수 활용을 고려합니다. --- 원문(HTML): https://games.cursorai.co.kr/programs/linux/modern/xh.html