HTTPie (aitch-tee-tee-pie로 발음)는 명령 줄 HTTP 클라이언트입니다. 목표는 CLI와 웹 서비스 간의 상호 작용을 최대한 인간 친화적으로 만드는 것입니다.
https://github.com/httpie/httpie
HTTPie는 테스트, 디버깅 및 일반적으로 API 및 HTTP 서버와 상호 작용하도록 설계되었습니다. http 및 https 명령을 사용하면 임의의 HTTP 요청을 만들고 보낼 수 있습니다. 간단하고 자연스러운 구문을 사용하고 형식이 지정되고 색상이 지정된 출력을 제공합니다.
이 문서는 httpie.org/docs에서 가장 잘 볼 수 있습니다. 여기에서 해당 HTTPie 버전을 선택하고 termible.io 임베디드 터미널을 사용하여 브라우저에서 직접 예제를 실행할 수 있습니다. GitHub에서 이것을 읽고 있다면 이 텍스트는 현재 개발 버전을 다룹니다. README.rst를 편집하여 문서에 대한 수정 및 개선 사항을 제출하도록 초대됩니다.
주요 특징
설치
macOS
macOS에서 HTTPie는 Homebrew를 통해 설치할 수 있습니다 (권장) :
brew install httpie
MacPorts 포트도 사용할 수 있습니다.
port install httpie
Linux
대부분의 Linux 배포는 시스템 패키지 관리자를 사용하여 설치할 수 있는 패키지를 제공합니다. 예를 들면 다음과 같습니다.
# Debian, Ubuntu, etc. $ apt install httpie
# Fedora $ dnf install httpie
# CentOS, RHEL, ... $ yum install httpie
# Gentoo $ emerge httpie
# Arch Linux $ pacman -S httpie
Windows, etc.
범용 설치 방법 (Windows, Mac OS X, Linux에서 작동하고 항상 최신 버전을 제공함)은 pip를 사용하는 것입니다.
# Make sure we have an up-to-date version of pip and setuptools: $ pip install --upgrade pip setuptools $ pip install --upgrade httpie
(어떤 이유로 pip 설치가 실패하면 easy_install httpie를 폴백으로 시도 할 수 있습니다.)
Python 버전
Python 버전 3.6 이상이 필요합니다.
불안정한 버전
GitHub의 마스터 브랜치에서 직접 출시되지 않은 최신 개발 버전을 설치할 수도 있습니다. 향후 안정적인 릴리스의 작업이 진행 중이므로 경험이 원활하지 않을 수 있습니다.
macOS에서는 Homebrew를 사용하여 설치할 수 있습니다.
brew install httpie --HEAD
그렇지 않으면 pip :
pip install --upgrade https://github.com/httpie/httpie/archive/master.tar.gz
이제 -dev 접미사가 있는 현재 개발 버전 식별자가 있는지 확인합니다. 예를 들면 다음과 같습니다.
http --version
# 2.0.0-dev
용법
Hello World :
http https://httpie.org/hello
개요:
http [flags] [METHOD] URL [ITEM [ITEM]]
http --help를 참조하십시오.
예
사용자 지정 HTTP 메서드, HTTP 헤더 및 JSON 데이터 :
http PUT httpbin.org/put X-API-Token:123 name=John
양식 제출 :
http -f POST httpbin.org/post hello=World
출력 옵션 중 하나를 사용하여 전송되는 요청을 확인하십시오.
http -v httpbin.org/get
오프라인 모드를 사용하여 요청을 보내지 않고 작성 및 인쇄 :
http --offline httpbin.org/post hello=offline
GitHub API를 사용하여 인증 문제에 대한 의견을 게시하십시오.
http -a USERNAME POST https://api.github.com/repos/httpie/httpie/issues/83/comments body='HTTPie is awesome! :heart:'
리디렉션 된 입력을 사용하여 파일 업로드 :
http httpbin.org/post < files/data.json
파일을 다운로드하고 리디렉션 된 출력을 통해 저장합니다.
http httpbin.org/image/png > image.png
파일 wget 스타일 다운로드
http --download httpbin.org/image/png
이름이 지정된 세션을 사용하여 동일한 호스트에 대한 요청간에 통신의 특정 측면이 지속되도록 합니다.
http --session=logged-in -a username:password httpbin.org/get API-Key:123
http --session=logged-in httpbin.org/headers
누락 된 DNS 레코드를 해결하기 위해 사용자 지정 호스트 헤더를 설정합니다.
http localhost:8000 Host:example.com
HTTP method
HTTP 메서드의 이름은 URL 인수 바로 앞에 있습니다.
http DELETE httpbin.org/delete
전송되는 실제 요청 라인과 유사합니다.
DELETE /delete HTTP/1.1
METHOD 인수가 명령에서 생략되면 HTTPie는 기본적으로 GET (요청 데이터 없음) 또는 POST (요청 데이터 포함)로 설정됩니다.
Request URL
HTTPie가 요청을 수행하는 데 필요한 유일한 정보는 URL입니다.
기본 체계는 http : //이며 인수에서 생략 할 수 있습니다.
http example.org
# => http://example.org
HTTPie는 기본 체계가 https : // 인 https 실행 파일도 설치합니다.
https example.org
# => https://example.org
Querystring parameters
터미널에서 쿼리 문자열 매개 변수를 사용하여 URL을 수동으로 구성하는 경우 URL 매개 변수를 추가하기 위한 param == value 구문을 사용할 수 있습니다.
이를 통해 쉘의 & 구분 기호를 이스케이프하는 것에 대해 걱정할 필요가 없습니다. 또한 매개 변수 이름이나 값의 모든 특수 문자는 자동으로 URL 이스케이프 처리됩니다 (HTTPie가 수정하지 않는 전체 URL에 지정된 매개 변수와 반대).
http https://api.github.com/search/repositories q==httpie per_page==1
GET /search/repositories?q=httpie&per_page=1 HTTP/1.1
URL shortcuts for localhost
또한 localhost에 대한 curl과 유사한 속기가 지원됩니다. 즉, 예를 들어 : 3000은 http : // localhost : 3000으로 확장됩니다. 포트가 생략되면 포트 80으로 간주됩니다.
http :/foo
GET /foo HTTP/1.1 Host: localhost
http :3000/bar
GET /bar HTTP/1.1 Host: localhost:3000
http :
GET / HTTP/1.1 Host: localhost
기타 기본 체계
HTTPie가 https로 호출되면 기본 체계는 https : //입니다 ($ https example.org는 https://example.org에 요청을 합니다).
--default-scheme <URL_SCHEME> 옵션을 사용하여 HTTP (플러그인을 통해 지원 될 수 있음) 이외의 다른 프로토콜에 대한 바로 가기를 만들 수도 있습니다. httpie-unixsocket 플러그인의 예 :
# Before $ http http+unix://%2Fvar%2Frun%2Fdocker.sock/info
# Create an alias $ alias http-unix='http --default-scheme="http+unix"'
# Now the scheme can be omitted $ http-unix %2Fvar%2Frun%2Fdocker.sock/info
--path-as-is
HTTP 클라이언트의 표준 동작은 일반적으로 파일 시스템과 같이 점 세그먼트를 스쿼시하여 URL의 경로 부분을 정규화하는 것입니다.
http -v example.org/./../../etc/password
GET /etc/password HTTP/1.1
--path-as-is 옵션을 사용하면 이 동작을 비활성화 할 수 있습니다.
http --path-as-is -v example.org/./../../etc/password
GET /../../etc/password HTTP/1.1
Request items
HTTP 헤더, 간단한 JSON 및 양식 데이터, 파일 및 URL 매개 변수를 지정하기 위한 편리한 메커니즘을 제공하는 몇 가지 다른 요청 항목 유형이 있습니다.
URL 뒤에 지정된 키 / 값 쌍입니다. 모두 공통적으로 전송되는 실제 요청의 일부가 되며 해당 유형은 사용 된 구분 기호 :, =, : =, ==, @, = @ 및 : = @에 의해서만 구별됩니다. @가있는 파일은 파일 경로를 값으로 예상합니다.
Item Type | Description |
---|---|
HTTP Headers Name:Value | Arbitrary HTTP header, e.g. X-API-Token:123 . |
URL parameters name==value | Appends the given name/value pair as a query string parameter to the URL. The == separator is used. |
Data Fields field=value , field=@file.txt | Request data fields to be serialized as a JSON object (default), to be form-encoded (with --form, -f ), or to be serialized as multipart/form-data (with --multipart ). |
Raw JSON fields field:=json , field:=@file.json | Useful when sending JSON and one or more fields need to be a Boolean , Number , nested Object , or an Array , e.g., meals:='["ham","spam"]' or pies:=[1,2,3] (note the quotes). |
Fields upload fields field@/dir/file field@file;type | Only available with --form, -f and --multipart . For example screenshot@~/Pictures/img.png , or 'cv@cv.txt;text/markdown' . With --form , the presence of a file field results in a --multipart request. |
데이터 필드가 요청 데이터를 지정하는 유일한 방법은 아닙니다. 리디렉션 된 입력은 임의의 요청 데이터를 전달하기 위한 메커니즘입니다.
등록된 댓글이 없습니다.