HTTPie
기능
httpie 는 python 으로 개발된 콘솔용 http client 유틸리티로 curl 대신 http 개발 및 디버깅 용도로 사용 가능하며 다음과 같은 특징이 있다.
왜 사용해야하는가?
- 요청과 응답이 어떻게 들어갔는지 볼수있고 다양한 기능을 내장함
- curl 에 비해 사용이 쉬움
- json 지원 기능 내장
- 출력을 포맷팅하여 보여주므로 가독성이 뛰어남
- Form 과 file 업로드가 쉬움
- HTTP 인증 및 커스텀 헤더 설정등
- 강력한 세션기능과 인증 기능을 제공함
설치
1 | brew install httpie |
기본 사용법
1 | http [flags] [METHOD] URL [ITEM [ITEM]] |
flags : 실행시 전달할 옵션으로 – 로 시작(Ex: –json, –a, –form)
METHOD : HTTP 메소드로 생략시 GET.
URL: 연결할 url
‘=’이면 post인자, ‘==’이면 get인자
사용할만한 옵션
–verbose, -v(요청값, 응답값 모두 보여줌)
Verbose output. Print the whole request as well as the response. Also print
–headers, -h(헤더만 보여줌)
Print only the response headers. Shortcut for --print=h.
–json, -j (요청한 내용 json으로 직렬화)
(default) Data items from the command line are serialized as a JSON object. The Content-Type and Accept headers are set to application/json (if not specified).
–form, -f(요청한 내용 보편화된 type으로 요청, file있으면 multipart로 전환)
Data items from the command line are serialized as form fields. The Content-Type is set to application/x-www-form-urlencoded (if not specified). The presence of any file fields results in a multipart/form-data request.
–auth, -a 옵션 뒤에 인증 정보를 전달
1
http -a username:password example.org
커스텀 HTTP 헤더를 전송하려면
Header:Value
1
2
3http httpbin.org/headers Accept: User-Agent:
http httpbin.org/headers 'Header;' 이렇게하면 header가 빈값
예시
보낸값
1 | http --json -v POST httpbin.org/post body=HTTPheart |
응답값
1 | POST /post HTTP/1.1 |
세션 유지하기
HTTPie를 사용하는 동안 각 요청은 다른 요청과 독립적입니다. 다른 HTTP 요청에 대해 세션을 유지하고 싶은 경우에 대비해 세션을 유지할 수 있습니다. 세션을 유지하려면 다음과 같이 명명된 세션을 만들기만 하면 됩니다.
1 | http --session=roy -a roy:mypass www.myservice.com |
위 명령은 세션 이름을 사용해 다른 요청에도 사용할 수 있는 roy
라는 세션을 만듭니다. 다음은 roy
세션을 사용하는 예입니다.
1 | http --session=roy www.myservice.com |
참고로 이 파일은 ~/.httpie/sessions/<host>/<name>.json
에 저장됩니다.
세션 파일 활용가능
이름 대신 세션 파일의 경로를 직접 지정할 수도 있습니다. 이를 통해 여러 호스트에서 세션을 재사용 할 수 있습니다.
1 | http --session = /tmp/session.json example.org |
HTTPie를 통한 Token 획득 및 요청
1 | 쉘> http POST http://주소/api-token-auth/ username="유저명" password="암호" |
1 | http http://localhost:8000/api/post/ "Authorization:Token <TOKEN값입력>" |
1 | #환경변수를 설정해서 편하게 이용하자 |