s s
.uef^" :8 :8 ..
:d88E .88 .88 @L
`888E :888ooo :888ooo 9888i .dL
888E .z8k -*8888888 -*8888888 `Y888k:*888.
888E~?888L 8888 8888 888E 888I
888E 888E 8888 8888 888E 888I
888E 888E 8888 8888 888E 888I
888E 888E .8888Lu= .8888Lu= 888E 888I
888E 888E ^%888* ^%888* x888N><888'
m888N= 888> 'Y" 'Y" "88" 888
`Y" 888 __ .__ 88F
J88" _/ |_| |__ ____ 98"
@% __ | _/ __ ./"
:" | | | Y ___/ ~`
|__| |___| /___ >
__________/_____/____________________
/ | __ ___/__ ___/______
/ ~ | | | | | ___/
Y /| | | | | |
___|_ / |____| |____| |____|
______/___________________.___.
__ ___/__ ___/__ | |
| | | | / | |
| | | | ____ |
|____| |____| / ______|
/
HTTY는 웹 서버와 상호 작용하기위한 콘솔 애플리케이션입니다. 웹 API를 탐색하고 HTTP의 내부를 배우는 재미있는 방법입니다.
최근 프로젝트 기록을 읽어 최근에 무엇이 바뀌 었는지 확인하십시오.
훨씬 쉬울 수는 없습니다.
$ gem install htty
Ruby와 Rubygems가 필요합니다. Ruby V1.8.7, v1.9.2, v1.9.3, v2.0, v2.1 및 v2.2에 대해 OS X에서 잘 작동하는 것으로 알려져 있습니다.
Htty 로 할 수있는 일은 다음과 같습니다.
다음은 주석이 달린 HTTY 세션 전사체가 있습니다 (여기에 표시된 터미널 스크린 샷도 텍스트 형식으로 제공됩니다).
이 간단한 예제는 HTTY 로 읽기 전용 웹 서비스를 탐색하는 방법을 보여줍니다.
완전한 또는 부분 웹 URL에서 HTTY를 가리킬 수 있습니다. URL을 공급하지 않으면 http://0.0.0.0/ (포트 80)이 사용됩니다. 원하는대로 프로토콜 체계, UserInfo, 호스트, 포트, 경로, 쿼리 문자열 및 조각을 변경할 수 있습니다.
HTTY 쉘 프롬프트는 현재 요청의 주소를 보여줍니다.
get 명령은 지원되는 7 개의 HTTP 요청 방법 중 하나입니다. 요청을 발행 할 때 응답에 대한 간결한 요약이 표시됩니다.
follow 명령을 사용하여 리디렉션을 따르십시오. get 또는 post 와 같은 요청 명령을 입력 할 때까지 요청이 없습니다.
주소의 세그먼트를 마음대로 조정할 수 있습니다. 여기서 우리는 사이트의 경로 계층 구조를 탐색하고 있으며, 이는 절대 경로 스펙뿐만 아니라 상대적으로 할 수 있습니다.
여기에 쿼리 스트링 매개 변수를 추가합니다. URL 인코딩이 필요한 문자는 자동으로 URL 인코딩되어 있습니다 (URL 인코딩 된 표현식의 일부가 아닌 한).
headers-response 및 body-response 명령은 응답의 세부 사항을 보여줍니다.
웹 서비스의 응답 (수평선, 구절 참조, 구절 번호, 저작권 스탬프 및 라인 브레이크)에는 일부 cruft가있었습니다. 우리는 우리가 말하는 웹 서비스에서 제공하는 API 옵션을 사용하여 제거합니다.
우리는 Julia Child 기동을 수행하고 address 명령을 사용하여 개별 쿼리 스트링 매개 변수를 하나씩 추가하는 대신 전체 URL을 변경합니다.
quit 입력하거나 CTRL-D를 때리면 언제든지 세션을 종료하십시오.
다음 예는 HTTY 의 HTTP 보안 지원 및 쿠키 기능과 과거 요청을 검토하고 다시 방문하는 방법을 보여줍니다.
https : // scheme and port 443은 http : // scheme 및 포트 80이 서로를 암시하는 것처럼 서로를 의미합니다. 체계 또는 포트를 생략하면 적절한 값으로 기본값이됩니다.
응답으로 쿠키가 제공되면 대담한 별표 (쿠키처럼 보입니다)가 응답 요약에 나타납니다. 응답 헤더를 표시 할 때 Set-Cookie 헤더 옆에 동일한 쿠키 기호가 나타납니다.
cookies-use 명령은 다음 요청에 대한 응답에서 쿠키를 복사합니다. 요청 헤더를 표시 할 때 쿠키 기호가 쿠키 헤더 옆에 나타납니다.
약식 역사는 history 명령을 통해 이용할 수 있습니다. 이력의 요청에 대한 정보에는 요청 방법, URL, 헤더 수 (및 쿠키 기호, 쿠키가 전송 된 경우) 및 신체 크기가 포함됩니다. 이력의 응답에 대한 정보에는 응답 코드, 헤더 수 (및 쿠키 기호, 쿠키가 수신 된 경우) 및 신체 크기가 포함됩니다.
히스토리에는 번호가 매겨진 HTTP 요청 및 응답 쌍 만 포함되며 입력 한 모든 명령의 기록이 아닙니다.
reuse 명령은 귀하가 구축하라는 이전 요청의 헤더와 본문의 사본을 만듭니다.
이제 HTTY 의 HTTP 기본 인증 지원을 살펴보고 HTTY 세션의 비공식적 인 성적표를 표시하는 방법을 배울 것입니다.
Sinatra의 기본 포트 4567에서 다음 Sinatra 응용 프로그램을 듣고 있다고 가정하십시오.
require 'sinatra'
get '/all-good' do
[ 200 , [ [ 'Set-Cookie' , 'foo=bar; baz' ] ] , 'Hello World!' ]
end
put '/huh' do
[ 404 , 'What?' ]
end
delete '/hurl' do
[ 500 , 'Barf!' ]
end
post '/submit-novel' do
redirect '/all-good'
end이 응용 프로그램은 Get and Post 요청 및 다양한 방식으로 응답합니다.
주소의 userInfo 부분 또는 전체 주소를 변경하면 적절한 HTTP 기본 인증 헤더가 자동으로 생성됩니다. URL 인코딩이 필요한 문자는 자동으로 URL 인코딩되어 있습니다 (URL 인코딩 된 표현식의 일부가 아닌 한).
userInfo가 요청에 제공되면, 요청 헤더를 표시 할 때 결과 인증 헤더 옆에 대담한 상인 기호 ( @ )가 나타납니다 (아래 참조).
body-set 입력하여 바디 데이터를 입력하고 두 개의 연속 공백 라인을 입력하거나 Ctrl-D를 치면 종료하십시오. 신체는 게시물 및 요청을 위해 전송됩니다. 적절한 컨텐츠 길이 헤더가 자동으로 만들어집니다 (아래 참조).
다른 응답 코드는 의미를 제안하는 색상으로 렌더링됩니다.
이전에 시연 된 약식 역사와 마찬가지로, 장황한 역사는 번호가 매겨진 요청 목록과 그들이 이끌어 낸 응답을 보여줍니다. 클라이언트와 서버간에 교환 된 모든 정보가 표시됩니다.
HTTY 내에서 HTTY 명령을 사용하는 방법을 배울 수 있습니다.
help Command는 약식 또는 전체 이름의 명령에 대한 선택적 인수를 취합니다.
GitHub 문제에 대한 결함 및 기능 요청을보고합니다.
당신의 패치는 환영하며, 좋은 물건을 위해 여기에서 귀속을 받게됩니다. 공식 HTTY 저장소를 포크하고 풀 요청을 보냅니다.
저장소를 복제 한 후 bin/setup 종속성을 설치합니다. 그런 다음 테스트를 실행하기 위해 rake . 또한 실험 할 수있는 대화식 프롬프트를 얻으려면 bin/console 받을 수도 있습니다.
이 보석을 로컬 컴퓨터에 설치하려면 bundle exec rake install . 새 버전을 해제하려면 Lib/Htty/version.rb 로 버전 번호를 업데이트 한 다음 bundle exec rake release 버전에 대한 GIT 태그를 작성하고 GIT 커밋 및 태그를 누르고 .gem 파일을 rubygems.org로 누릅니다.
트위터에서 @get_htty를 팔로우하여 HTTY 프로젝트와 연락하십시오.
Freenode의 #htty 채널에서 도움을받을 수도 있습니다.
저자 인 Nils Jonsson은 HTTP-Console Project에 영감을주는 빚을지고 있습니다.
기고자들에게 감사합니다 (알파벳 순서로) :
MIT 라이센스에 따라 릴리스.