Students Save 30%! Learn & create with unlimited courses & creative assets Students Save 30%! Save Now
Advertisement
  1. Code
  2. HTTP
Code

인간 친화적인 cURL의 대안, HTTPie

by
Difficulty:BeginnerLength:ShortLanguages:

Korean (한국어) translation by Dae-yeop Lee (you can also view the original English article)

cURL은 HTTP 요청을 생성하는 데 일반적으로 사용되는 명령줄 도구입니다. 이 튜토리얼에서는 인간에게 친숙한 방식으로 HTTP 요청을 생성하는 명령줄 도구인 HTTPie를 살펴보겠습니다. HTTPie는 간단하고 자연스러운 문법을 가진 명령어를 사용하고 출력 결과를 보기 좋은 방식으로 표시합니다.

공식 문서에서는 다음과 같이 설명하고 있습니다.

HTTPie(에이치-티-티-파이라고 발음)는 명령줄 HTTP 클라이언트입니다. HTTPie의 목표는 웹 서비스와의 CLI 상호작용을 가능한 한 인간 친화적으로 만드는 것입니다. HTTPie는 단순하고 자연스러운 문법을 사용해 임의의 HTTP 요청을 보낼 수 있는 간단한 http 명령을 제공하고 컬러로 된 출력 결과를 표시합니다. HTTPie는 HTTP 서버에 대한 테스트, 디버깅, 상호작용하는 데 사용할 수 있습니다.

시작하기

우분투(Ubuntu) 장비에서 HTTPie를 시작하려면 apt-get을 사용해 패키지를 설치해야 합니다.

위와 같은 방법으로 설치하고 나면 시스템에서 HTTPie를 사용할 수 있습니다. HTTPie를 사용해 아무 웹 사이트를 대상으로 GET 요청을 만들어봅시다.

위와 같이 질의하면 다음과 같은 응답이 반환됩니다.

HTTP Response

보다시피 HTTPie가 설치되어 시스템에서 작동하는 것처럼 보입니다. 자세히 살펴보면 위 명령에서 색상으로 표시된 출력 결과는 URL이 https://tutsplus.com으로 영구적으로 이동했음을 보여줍니다. 따라서 tutsplus을 대상으로 GET 요청 쿼리를 수행하려면 다음과 같이 쿼리를 수정합니다.

위 쿼리는 https://tutsplus.com이라는 URL을 대상으로 GET 요청을 수행한 HTML 출력 결과를 반환합니다.

위 쿼리에서 볼 수 있듯이 HTTPie가 요청을 수행하는 데 필요한 유일한 정보는 URL입니다.

HTTPie를 이용해 기본 요청 수행하기

HTTPie 명령을 자세히 살펴보기에 앞서 HTTPie를 사용해 기본 요청을 수행하는 방법을 살펴보겠습니다. 여기서는 json-server를 이용해 요청을 만들기 위한 더미 서버를 만들고 실행하겠습니다. json-server를 시작하기 위해 npm을 사용해 서버를 설치합니다.

index.js라는 파일을 만들어 더미 서버에 임의의 데이터를 만듭니다.

index.js 파일을 이용해 json-server를 실행합니다.

이제 http://localhost:3000/에서 서버가 실행될 것입니다.

HTTPie를 이용한 GET 요청

기본적으로 HTTPie에 URL을 지정하면 HTTPie는 요청 유형을 GET으로 간주하고 그에 따라 요청을 수행합니다. 다음은 GET 요청의 예입니다.

위 요청은 다음과 같은 출력 결과를 표시합니다.

HTTPie를 이용한 POST 요청

HTTPie를 이용해 POST 요청을 수행하려면 URL에 게시할 데이터와 함께 POST 키워드를 추가해야 합니다. 다음 예제를 봅시다.

이 명령은 터미널 화면에 다음과 같은 출력 결과를 표시합니다.

HTTPie를 이용해 GET 요청을 시도하면 새로 게시된 데이터가 응답에 들어있음을 확인할 수 있습니다.

HTTPie를 이용해 폼 제출하기

폼을 제출하는 것은 사용자가 일반적으로 수행하는 또 한 가지 요청 중 하나입니다. HTTPie를 이용하면 다음과 같이 form 옵션을 지정해 URL로 폼을 제출하는 것이 훨씬 쉬워집니다.

위 명령을 실행하면 Content-Type이 자동으로 application/x-www-form-urlencoded; charset = utf-8로 설정되므로 명시적으로 설정하지 않아도 됩니다.

HTTP 리디렉트 처리하기

앞의 예에서 볼 수 있듯이 기본적으로 HTTPie는 HTTP 리디렉션을 처리하지 않습니다. www.tutsplus.com을 대상으로 GET 요청을 시도했을 때 URL이 옮겨졌음을 나타내는 메시지가 표시됐었습니다. HTTPie가 리디렉션을 처리하게 하려면 요청 명령에 follow 옵션을 추가해야 합니다.

위 HTTPie 쿼리는 HTTP 리디렉션을 처리할 것입니다(리디렉션이 필요할 경우).

HTTPie를 이용한 파일 다운로드

HTTPie는 wget 명령과 유사하게 서버에서 파일을 다운로드하는 기능을 제공합니다. 파일을 다운로드하려면 URL과 함께 download 옵션을 지정해야합니다.

위의 명령은 다음과 같은 응답을 표시합니다.

인증 처리하기

웹 서비스 URL에 접근하려면 인증이 필요할 수 있습니다. HTTPie는 일반적으로 사용되는 대부분의 인증 메커니즘을 지원합니다. 기본적으로 HTTPie는 기본 인증을 지원하므로 사용자명과 비밀번호를 -a 옵션과 함께 요청에 전달하기만 하면 됩니다.

다이제스트 인증을 사용하려면 -A 옵션을 사용해 인증 메커니즘의 이름을 전달해야 합니다.

응답 표시 형식 커스터마이즈하기

어떤 URL을 대상으로 요청을 수행할 때 헤더 정보와 함께 모든 데이터가 터미널에 표시됩니다. HTTPie는 출력되는 응답을 커스터마이즈하는 옵션을 제공합니다. 요청과 함께 --header--body 옵션을 지정해 개별 헤더와 본문 정보를 출력할 수 있습니다.

위 명령은 다음과 같이 헤더 정보를 출력합니다.

이제 --body 옵션과 함께 HTTP 요청을 시도하면 본문 부분만 출력될 것입니다.

위 명령은 다음과 같은 결과를 출력합니다.

세션 유지하기

HTTPie를 사용하는 동안 각 요청은 다른 요청과 독립적입니다. 다른 HTTP 요청에 대해 세션을 유지하고 싶은 경우에 대비해 세션을 유지할 수 있습니다. 세션을 유지하려면 다음과 같이 명명된 세션을 만들기만 하면 됩니다.

위 명령은 세션 이름을 사용해 다른 요청에도 사용할 수 있는 roy라는 세션을 만듭니다. 다음은 roy 세션을 사용하는 예입니다.

HTTP 프롬프트를 이용한 자동 완성

HTTPie와 관련된 모든 명령을 기억하기는 어려울 수 있습니다. http-prompt 툴킷은 HTTPie와 함께 사용할 수 있는 자동 완성 기능을 제공합니다. http-prompt를 시작하려면 pip를 이용해 설치합니다.

세션을 시작하려면 쿼리를 수행할 서버 URL로 http-prompt를 호출합니다. 앞에서 설치한 json-server를 다시 시작한 후 다음과 같이 http-prompt를 호출합니다.

HTTP의 몇 글자를 입력하면 자동 완성이 표시됩니다.

A demo of the autocomplete

httpie를 입력하면 쿼리를 수행할 URL이 표시됩니다.

http-prompt에서는 모든 HTTPie 요청 명령이 작동할 것입니다. GET을 입력하면 자동 완성에 팝업이 표시됩니다. GET 명령을 입력할 때 다음과 같은 응답이 표시될 것입니다.

The response of a GET command

정리

이 튜토리얼에서는 좀 더 인간 친화적인 cURL의 대안인 HTTPie를 시작하는 법을 살펴봤습니다. HTTPie 및 기타 기능을 사용해 GET과 POST 같은 기본 요청 작업을 수행하는 방법을 살펴봤습니다. HTTPie 사용에 대한 자세한 정보는 공식 문서를 참고합니다. 아울러 http-prompt에 대한 공식 문서도 확인해 보시길 바랍니다. 아래 댓글로 여러분의 생각을 알려주세요.

Advertisement
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.