HTTPie는 python 으로 개발된 콘솔용 http client 유틸리티입니다.
http 개발 및 디버깅 용도로 사용 가능합니다.

EndPoint 개발 시
Front에서 받을 정보를 임의로 보내보면서
발생하는 에러를 바로 확인할 수 있기때문에
에러 처리를 하기에 매우 유용합니다.

1. How to Use HTTPie

http [flags] [METHOD] URL [ITEM [ITEM]]

위와 같은 순서로 사용할 수 있으며

보통 API 개발 시
request에 대한 response를 보고 싶을 때

http -v POST localhost:8000 name=devzunky

위와 같이 사용됩니다.

-v는 response 내용을 자세히 보여주는 옵션입니다.
그리고 name=devzunky처럼 request의 body에 들어갈
ITEM들을 보내줄 수 있습니다.

2. JSON

HTTPie는 JSON 데이터 타입을 지원하며
command에 request data가 포함되어 있다면
JSON으로 Serializing합니다.

1. How to Use HTTPie에서 name=devzunky는

{
    "name":"devzunky"
}

위처럼 JSON 데이터로 해당 URL에 전송됩니다.

JSON 데이터를 request의 body에 정확히 담는 방법을 알아보겠습니다.

2-1. := separator

String이 아닌 정보는 :=separator를 사용합니다.
:=seperator는 raw JSON을 object에 담을 수 있도록 합니다.

Text파일은 =@separator
raw JSON 파일은 =@:separator를 사용합니다.

http PUT api.example.com/person/1
    name=John
    age:=29 married:=false hobbies:='["http", "pies"]' # Raw JSON
    description=@about-john.txt     # Embed text file
    bookmarks:=@bookmarks.json      # Embed JSON file

2-2. list, dictionary 구분

single quote을 이용해 list와 dictionary라는 것을 알려줍니다.
또한, double quote을 사용해 dictionary의 Key라는 것을 알립니다.

http -v POST www.devzunky.com numbers:='[1, 2, 3]' me:='{"name":"zunky"}'

다음과 같이 리스트에 객체를 담는 경우,
부모 역할에만 single quote으로 구분해줍니다.

http -v POST www.devzunky.com  me:='[{"name":"zunky"}, {"gender":"male"}]'