httpie 는 외부의 Open API 또는, 개발 중인 REST API 를 테스트해볼 때에 유용하게 사용하는 도구입니다. 특히나 JSON 을 입력으로 요청할 때에는 curl에 비해서 타이핑하는 양도 훨씬 줄어듭니다.
예를 들어 다음과 같은 JSON을 입력으로 요청한다고 하면,
{ "username": "johndoe@gmail.com", "password": "johndoe1234", "passwordConfirm": "johndoe1234" }
다음과 같이 할 수 있습니다.
http post localhost:8080/user "username=johndoe@gmail.com" "password=johndoe1234" "passwordConfirm=johndoe1234"
curl을 사용한다고 하면 다음과 같습니다.
curl -XPOST -H "Content-Type: application/json" localhost:8080/user -d > { > "username": "johndoe@gmail.com", > "password": "johndoe1234", > "passwordConfirm": "johndoe1234" > }
그런데, httpie 도 다음과 같은 nested 구조의 JSON을 입력으로 하는 것은 간단하게 되지 않습니다.
{ "user": { "name": "johndoe@gmail.com", "password": "johndoe1234", "passwordConfirm": "johndoe1234" } }
3가지 정도의 방법이 있습니다.
1. stdin 파이프
echo '{"user": {"name": "johndoe@gmail.com", "password:"johndoe1234", "passwordConfirm":"johndoe1234"}}' | http post localhost:8080/user
2. JSON 텍스트를 그대로 입력
http post localhost:8080 user:='{"name": "johndoe@gmail.com", "password:"johndoe1234", "passwordConfirm":"johndoe1234"}'
3. JSON 파일 입력
복잡한 구조의 nested JSON 으로 되어 있다면, JSON을 파일로 저장한 뒤에 다음과 같이 합니다.
http post localhost:8080/users < user.json