HTTPie REST Client for CLI

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 조합이나 VSCodeREST CLIENT 를 쓰는게 더 편하지만 조금만 익숙해 지면 더 편하게 쓸 수 있을것 같은 느낌이 들어 정리해 본다.

플러그인 도 있다는데 다음에 알아보기로 ..

참고