开始之前如果您还没有这样做,请创建一个帐户。按照我们的指南设置和保护计算实例来更新您的系统。您可能还希望设置时区、配置主机名、创建受限用户帐户以及加强SSH访问。请注意,本指南中的步骤是为非根用户编写的。需要提升权限的命令以sudo为前缀。如果不熟悉sudo命令,请参考https://www.linuxmi.com/linux-sudo-command.html。什么是HTTPie?HTTPie是一个类似于cURL的命令行HTTP客户端。但与cURL不同的是,HTTPie旨在更易于与现代webapi一起使用。HTTPie的语法是面向网络服务的。它的界面比cURL更具可读性和用户友好性。这些特性使HTTPie成为测试、调试或以其他方式从命令行使用Web服务的绝佳工具。HTTPie与cURL本节探讨为什么您可能会选择使用HTTPie而不是cURL,特别是因为cURL在许多Linux发行版上都是默认安装的。cURL擅长扩展选项以涵盖广泛的HTTP需求。HTTPie专注于支持对现代webapi的查询。使用webapi时,它会提供最相关的详细信息并隐藏您不太可能需要的信息。HTTPie的输出可以让你更直观、更清晰地与Web服务进行交互。如果你想使用webapi,尤其是带有JSON数据的RESTfulapi,你应该考虑HTTPie。或者,如果您想要一个HTTP客户端来满足更一般的需求,请考虑cURL,因为它提供了使其更具适应性的选项。您可以从我们的《如何在 Linux 上安装和使用 curlie 命令》了解更多关于curlie的信息,这是一个具有HTTPie的可读性和cURL的适应性的现代命令行HTTP客户端。如何安装HTTPieHTTPie可从大多数主要Linux发行版的包管理器中获得。以下是通过不同发行版的包管理器安装HTTPie时可以使用的命令。在Debian和Ubuntu上,使用以下命令:sudoaptinstallhttpie在AlmaLinux和CentOS操作系统上,执行以下命令:sudoyuminstallhttpie在Fedora上,使用以下命令:sudodnfinstallhttpie安装HTTPie后,您可以验证Install它并使用http命令访问它。linuxmi@linuxmi/home/linuxmi/www.linuxmi.com?http--version1.0.3如何使用HTTPie如果您熟悉其他HTTP客户端,httppie应该更容易学习。它的大部分基本用法与cURL类似,但它允许您简化所需的命令。以下小节描述了在使用Web服务时如何使用HTTPie处理最常见的HTTP请求。基本用法您可以在GET请求中看到HTTPie的最基本用法。与cURL一样,HTTPie不需要您指定请求方法。只需提供命令和请求URL。默认情况下,HTTPie的输出包括响应标头。它使用语法突出显示使响应更易于阅读,如下面的屏幕截图所示:在httppie中向请求添加标头数据需要在URL之后附加数据,如下面的命令所示。以下示例从Web服务中获取随机的“爸爸笑话”。您可以看到该命令还添加了--follow选项,该选项告诉HTTPie遵循任何URL重定向(相当于curl中的-L)。HTTPie在其输出中包含重定向响应标头信息。请求方法要在httppie中指定请求方法,只需将方法名称——GET、POST、PUT、DELETE等——作为http命令的第一部分。这可以在下一个示例中看到,该示例使用HTTPie自己的Web服务进行测试。#显示请求信息(包括返回头200)httpwww.linuxmi.com#显示详细请求(包括请求和返回头200)http-vwww.linuxmi.com#只显示Headerhttp-hwww.linuxmi.comhttp--headwww.linuxmi.comhttp--headerwww.linuxmi.comhttp--headerswww.linuxmi.com#只显示Bodyhttp-bwww.linuxmi.comhttp--bodywww.linuxmi.com#下载文件http-dwww.linuxmi.com#模拟表单提交http-fPOSTwww.linuxmi.comusername='linuxmi-user'#请求删除方式httpDELETEwww.linuxmi.com#通过JSON数据请求(默认为JSON数据请求)httpPUTwww.linuxmi.comusername='linuxmi-user'password='linuxmi-pwd'#如果JSON数据存在且不是字符串,用:=分隔,例如httpPUTwww.linuxmi.comusername='linuxmi-user'password='linuxmi-pwd'age:=28a:=truestreets:='["a","b"]'#模拟Form的Post请求,Content-Type:application/x-www-form-urlencoded;charset=utf-8http--formPOSTwww.linuxmi.comusername='linuxmi-user'#模拟表单上传,Content-Type:multipart/form-datahttp-fPOSTwww.linuxmi.com/jobsusername='linuxmi-user'文件@~/test.pdf#修改请求头,使用:separatehttpwww.linuxmi.comUser-Agent:mimvp-agent/1.0'Cookie:a=b;b=c'Referer:http://www.linuxmi.com/#Authenticatehttp-ausername:passwordwww.linuxmi.comhttp--auth-type=digest-ausername:passwordwww.linuxmi.comHTTPPrompt–交互式命令行HTTP客户端HTTP提示(或HTTP-prompt)是一个交互式命令行HTTP客户端,构建在HTTPie和prompt_toolkit之上,具有自动完成和语法突出显示功能。它还支持自动cookie、OpenAPI/Swagger集成以及类Unix管道和输出重定向。此外,它还提供了20多个随时可用的主题。我们现在将解释如何在Linux中安装和简要使用HTTP-prompt。如何在Linux中安装HTTPPrompt您可以使用pip命令安装HTTPPrompt,就像常规Python包一样,如图所示。linuxmi@linuxmi/home/linuxmi/www.linuxmi.com?pipinstallhttp-promptpipinstallPygments==2.5.2如果您尝试在系统范围的Python上安装HTTP-prompt,您可能会遇到一些权限错误。不推荐这样做,但如果你想这样做,只需使用sudo命令来获得root权限。或者,您可以使用--user选项将软件包安装到您的用户主目录中,如下所示:pipinstall--userhttp-prompt要升级HTTP提示:pipinstall-Uhttp-prompt如何在Linux中使用HTTP提示要启动会话,只需运行http-prompt命令,如图所示。来自上次会话或http://localhost:8000linuxmi@linuxmi/home/linuxmi/www.linuxmi.com?http-prompt版本:2.1.0http://localhost:8000>httpieposthttpPOSThttp://localhost:8000http://localhost:8000>startfromgivenURLlinuxmi@linuxmi/home/linuxmi/www.linuxmi.com?http-prompthttp://localhost:3000startfromsomeinitialoptionslinuxmi@linuxmi/home/linuxmi/www.linuxmi.com?http-promptlocalhost:300/api--authuser:linuxmiusername=linuxmi要预览HTTPPrompt将如何调用HTTPie,请运行以下命令。http://localhost:300/api>httpieposthttp--auth=user:linuxmiPOSThttp://localhost:300/apiusername=linuxmi启动会话后,您可以交互式地键入命令您可以发送HTTP请求,输入一个HTTP方法,如下图。>head>get>post>put>patch>delete可以使用HTTPie中的语法添加标头、查询字符串或文字参数。下面是一些示例:#setheader>Content-Type:application/json#querystringparameters>page==5#bodyparameters>username=linuxmi>full_name='www.linuxmi.com'#bodyparametersinrawJSON>number:=18719>is_ok:=true>names:=["linuxmi","com"]>user:='{"username":"linuxmi","password":"linuxmi"}'#把所有的都写在一个里面line>Content-Type:application/jsonpage==5username=linuxmi您还可以添加HTTPie选项,如图所示。>--form--authuser:pass>--verify=no或>--form--authuser:passusername=linuxidcContent-Type:application/json重置会话(清除所有参数和选项)或退出会话,请运行:>rm*#resetsession>exit#exitsession有关更多信息和用法示例,请参阅HTTP提示文档:http://http-prompt.com/。结论好的,就是这样!HTTPPrompt是HTTPie的完美伴侣。您现在应该能够开始使用HTTPie向WebAPI发送请求。如果您发现自己在寻找更高级的功能,您可以在深入研究HTTPie时找到它们。查看httppie的官方文档,并参考http--help命令开始了解更多关于httppie的功能。我们很乐意听取您的意见。通过在下方留下评论来分享您的想法或提出有关HTTPPrompt与HTTPie的问题。
