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是用于与Web服务器进行交互的控制台应用程序。这是探索Web API并学习HTTP的来龙去脉的有趣方式。
通过阅读项目历史记录,看看最近发生了变化。
这再容易得多。
$ gem install htty
您需要红宝石和红宝石。众所周知,在OS X下对Ruby v1.8.7,v1.9.2,v1.9.3,v2.0,v2.1和v2.2的运作良好。
您可以用HTTY做的事情是:
以下是一些带注释的HTTY会话成绩单,可以让您开始(此处显示的终端屏幕截图也可以提供文本形式)。
这个简单的示例显示了如何使用HTTY探索只读的Web服务。
您可以指向完整或部分的Web URL。如果您不提供URL,则将使用http://0.0.0.0/(端口80)。您可以根据需要改变协议方案,UserInfo,host,port,路径,查询字符串和片段。
htty shell提示显示当前请求的地址。
get命令是支持的七个HTTP请求方法之一。当您发布请求时,将显示响应的简明摘要。
您可以使用follow命令关注重定向。在键入诸如get或post类的请求命令之前,不提出请求。
您可以随意调整地址段。在这里,我们正在浏览该站点的路径层次结构,您可以使用相对和绝对路径范围进行操作。
在这里,我们添加查询弦参数。请注意,需要URL编码的字符会自动编码URL编码(除非它们是URL编码的表达式的一部分)。
headers-response和body-response命令揭示了响应的细节。
Web服务的响应中有一些巡回赛(水平线,段落参考,经文编号,版权邮票和线路断裂)。我们通过使用我们与之交谈的Web服务提供的API选项来消除它。
我们执行朱莉娅·童车(Julia Child)操纵,并使用address命令更改整个URL,而不是添加单个查询串线参数。
随时键入quit或击中CTRL-D,随时退出会议。
下一个示例演示了HTTY的HTTP安全支持和Cookie功能,以及如何审查和重新访问过去的请求。
https://方案和端口443暗示着彼此,就像http:// schem和port 80彼此之间一样。如果省略了计划或端口,则将默认为适当的值。
请注意,当响应中提供cookie时,响应摘要中会出现大胆的星号(看起来像cookie)。显示响应标头时,相同的cookie符号出现在set-cookie标头旁边。
cookies-use命令将cookie从响应中复制到下一个请求中。显示请求标头时,cookie符号出现在cookie标头旁边。
可通过history记录命令获得缩写的历史记录。历史记录中有关请求的信息包括请求方法,URL,标题数(以及cookie符号,如果发送了cookie)以及身体的大小。有关历史记录响应的信息包括响应代码,标头数(和cookie符号,如果收到了cookie)以及身体的大小。
请注意,历史记录仅包含编号的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该应用程序期望以各种人为的方式发布和发布请求和响应。
当您更改地址的UserInfo部分或整个地址时,会自动为您创建适当的HTTP基本身份验证标头。请注意,需要URL编码的字符会自动编码URL编码(除非它们是URL编码的表达式的一部分)。
在请求中提供UserInfo时,显示请求标题时,将出现一个大胆的商品符号( @ )(请参见下文)。
键入body-set以输入身体数据,并通过输入两个连续的空白线或击中CTRL-D来终止它。尸体将仅发送邮寄并提出请求。为您创建适当的内容长度标头(请参见下文)。
不同的响应代码呈现出暗示其含义的颜色:
与前面所展示的缩写历史一样,冗长的历史记录显示了一个编号的请求列表及其引起的回答。显示了客户端和服务器之间交换的所有信息。
您可以从HTTY内学习如何使用HTTY命令。
help命令对命令的缩写或全名进行可选参数。
在GitHub问题上报告缺陷和功能请求。
欢迎您的补丁,您将在这里收到归因。分叉官方的HTTY存储库,并发送拉动请求。
克隆存储库后, bin/setup安装依赖项。然后rake以运行测试。您还可以bin/console获得互动提示,以使您可以进行实验。
要将此宝石安装到本地计算机上, bundle exec rake install 。要发布新版本,请更新lib/htty/htty/version.rb中的版本编号,然后bundle exec rake release ,该版本将为版本创建一个git标签,推送git consits和tags,然后将.gem文件推到rubygems.org。
通过在Twitter上关注@get_htty,与HTTY项目保持联系。
您还可以在FreeNode的#HTTY频道中获得帮助。
作者尼尔斯·琼森(Nils Jonsson)欠HTTP-Console项目的灵感债务。
感谢贡献者(按字母顺序排列):
根据MIT许可发布。