HTTPie REST Client for CLI
2023, Oct 17
API 개발 및 테스트를 위한 HTTP 클라이언트 HTTPie 에 대해 알아본다. curl 처럼 command line 에서 쓸 수 있고 터미널이 익숙하지 않은 유저를 위한 데스크탑 GUI 버전도 있다.
HTTPie CLI Tools
httpie 페이지를 참고하여 HTTPie 클라이언트를 설치한다.
공식 문서를 따라 아래와 같이 패키지 정보를 추가하고 apt 패키지 관리자로 설치한다.
# Install httpie
$ curl -SsL https://packages.httpie.io/deb/KEY.gpg | sudo gpg --dearmor -o /usr/share/keyrings/httpie.gpg
$ sudo echo "deb [arch=amd64 signed-by=/usr/share/keyrings/httpie.gpg] https://packages.httpie.io/deb ./" > /etc/apt/sources.list.d/httpie.list
$ sudo apt update
$ sudo apt install httpie
파이썬으로 만들어져 아래와 같이 pip 를 이용해서 설치할 수도 있다.
$ pip install httpie
JSON 응답 포맷팅.
http 명령어로 기본으로는 curl 과 동일한 방식으로 사용할 수 있다.
curl 은 응답이 json 인 경우 jq 로 포맷팅을 해서 확인하곤 했지만 httpie는 기본으로 JSON 응답을 포맷팅 해서 보여준다.
❯ http https://api.ipify.org\?format\=json
HTTP/1.1 200 OK
Connection: keep-alive
Content-Length: 23
Content-Type: application/json
Date: Sat, 14 Oct 2023 13:51:17 GMT
Server: nginx/1.25.1
Vary: Origin
{
"ip": "222.99.205.168"
}
POST 요청 (JSON 데이터)
POST 요청시 key=value 형식으로 JSON 데이터를 추가할 수 있고 데이터가 있으면 자동으로 POST로 요청된다.
헤더는 싱클 쿼테이션에 : 로 구분한다.
JSON 데이터는 스트링 타입인 경우 = 로 구분한다.
문자열은 더블 쿼테이션으로 묶어준다.
문자열이 아닌 경우에는 싱글 쿼테이션에 := 로 구분한다.
$ http -v :15230/preprocess 'Content-Type: application/json' \
text="(tx) 네 안녕하세요 고객센터입니다 (rx) 여보 (rx) 여보세 (rx) 예 예 예" \
speaker:='{"counselor": "(tx)", "customer": "(rx)"}' \
apply_sentence_separation:=true
오프라인 모드
아래와 같이 오프라인 모드로 실제 전송은 하지 않고 만들어지는 데이터를 확인 할 수 있다.
❯ http --offline -s monokai https://api.ipify.org format\=json
POST / HTTP/1.1
Accept: application/json, */*;q=0.5
Accept-Encoding: gzip, deflate
Connection: keep-alive
Content-Length: 18
Content-Type: application/json
Host: api.ipify.org
User-Agent: HTTPie/3.2.1
{
"format": "json"
}
TLDR
curl + jq 조합이나 VSCode의 REST CLIENT 를 쓰는게 더 편하지만 조금만 익숙해 지면 더 편하게 쓸 수 있을것 같은 느낌이 들어 정리해 본다.
플러그인 도 있다는데 다음에 알아보기로 ..