[译]httpie: CLI, 类似cURL的客户端

5 Request URL

HTTPie执行请求,唯一需要指定的信息是URL。默认的scheme,不出意外的,http://,是可以忽略的,http example.org 也是可以的。

此外,像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

如果需要在终端手动用查询字符串参数,可以用param=value的语法拼接URL参数,而不必担心会丢失&分隔符。而且,参数里的特殊字符也会自动去除。

可以用 --default-scheme <URL_SCHEME>选项来创建其他协议的快捷方式

$ alias https=‘http --default-scheme=https‘

  

6 请求项

有几种不同的request类型可以方便的指定HTTP头,JSON格式的数据,FORM数据,文件以及URL参数。在URL后面指定键值对。

这些请求项都有共同的特点,是实际请求的一部分,它们仅仅以分隔符区分,:=:===@[email protected], and :[email protected],有@符号的是指定一个文件的路径

Item Type Description

HTTP Headers

Name:Value

任意 HTTP header, e.g. X-API-Token:123.

URL parameters

name==value


添加键值对作为URL的查询字符串参数

The == separator is used.


Data Fields

field=value,[email protected]


请求数据字段默认作为JSON对象传递, 或者作为form-encoded (--form, -f).


Raw JSON fields

field:=json,field:[email protected]


有时传递JSON,有些字段类型是 Boolean,Number, 内嵌对象t, or an Array,

e.g., meals:=‘["ham","spam"]‘ or pies:=[1,2,3] (注意引号).


Form File Fields

[email protected]/dir/file


仅仅刚使用 --form, -f的时候有效.

For example [email protected]~/Pictures/img.png. 这种形式会导致一个 a multipart/form-data request.

You can use \ to escape characters that shouldn‘t be used as separators (or parts thereof). For instance,foo\==bar will become a data key/value pair (foo= and bar) instead of a URL parameter.

有时需要用到引号把值引起来 e.g. foo=‘bar baz‘.

如果字段名是以减号开始的‘-’(e.g., -fieldname), 需要把它们放在 -- 后面以避免冲突 --arguments:

$ http httpbin.org/post  --  -name-starting-with-dash=foo --Weird-Header:bar

  

POST /post HTTP/1.1
--Weird-Header: bar

{
    "-name-starting-with-dash": "value"
}

  注意数据字段并不是传递request data的唯一方式,Redirected input也可以传递唯一的数据

7 JSON

JSON是现代web服务的通用语言,也是HTTPie默认使用的隐含类型:

如果命令行中包含数据项,它们默认序列化为JSON格式。HTTPie会自动设置下列头,它们也都是可以重写的:

Content-Type application/json
Accept application/json, */*

也可以用--json, -j显式的把Accept设置成application/json,不管是否需要传递数据(有一种快捷方式设置头,通过常用的头标识符 http url Accept:‘application/json, */*‘)

此外,HTTPie会检测JSON响应,即使Content-Type并不正确(比如text/plain)或者没有设置。

例子:

$ http PUT example.org name=John [email protected]
PUT / HTTP/1.1
Accept: application/json, */*
Accept-Encoding: gzip, deflate
Content-Type: application/json
Host: example.org

{
    "name": "John",
    "email": "[email protected]"
}

非string的字段要用:=分隔符,可以把纯JSON插入对象里。Text和纯JSON文件可以分别用[email protected]和:[email protected]标识符插入:

$ http PUT api.example.com/person/1     name=John     age:=29 married:=false hobbies:=‘["http", "pies"]‘ \  # Raw JSON
    [email protected] \   # Embed text file
    bookmarks:[email protected]      # Embed JSON file
PUT /person/1 HTTP/1.1
Accept: application/json, */*
Content-Type: application/json
Host: api.example.com

{
    "age": 29,
    "hobbies": [
        "http",
        "pies"
    ],
    "description": "John is a nice guy who likes pies.",
    "married": false,
    "name": "John",
    "bookmarks": {
        "HTTPie": "http://httpie.org",
    }
}

用文件形式传递JSON数据用如下形式:

$ http POST api.example.com/person/1 < person.json

8 Form

8.1 规则form

$ http --form POST api.example.org/person/1 name=‘John Smith‘
POST /person/1 HTTP/1.1
Content-Type: application/x-www-form-urlencoded; charset=utf-8

name=John+Smith

8.2 文件上传form

提供的一个以上的字段的话,序列化的content type就是multipart/form-data

$ http -f POST example.com/jobs name=‘John Smith‘ [email protected]~/Documents/cv.pdf

上述请求和如下HTML表单提交的情况一样:

<form enctype="multipart/form-data" method="post" action="http://example.com/jobs">
    <input type="text" name="name" />
    <input type="file" name="cv" />
</form>

注意@符号用于模拟文件上传的表单字段,而[email protected]符号只是把文件内容作为text插入

9. HTTP 头

如果要设置自定义的头可以用Header:Value标志符

$ http example.org  User-Agent:Bacon/1.0  ‘Cookie:valued-visitor=yes;foo=bar‘ X-Foo:Bar  Referer:http://httpie.org/
GET / HTTP/1.1
Accept: */*
Accept-Encoding: gzip, deflate
Cookie: valued-visitor=yes;foo=bar
Host: example.org
Referer: http://httpie.org/
User-Agent: Bacon/1.0
X-Foo: Bar

HTTPie默认设置了需要头信息

GET / HTTP/1.1
Accept: */*
Accept-Encoding: gzip, deflate
User-Agent: HTTPie/<version>
Host: <taken-from-URL>

默认的头可以重写也可以清除掉,清除已指定的头(比如一个默认的头),用Header:

$ http httpbin.org/headers Accept: User-Agent:

如果要传空值的头,用Header;

$ http httpbin.org/headers ‘Header;‘

  

时间: 2024-11-04 14:11:36

[译]httpie: CLI, 类似cURL的客户端的相关文章

文件下载---解决方案---类似360同步客户端

需求: 在某个文件管理Activity中,点击某个Item,就下载文件: 点击所有Item,将所有Item所对应的文件,逐个下载. 某个文件在下载时,界面要不断显示出下载进度. 服务器的文件和本地的文件是使用同一个目录,根360的同步客户端类似. 要注意的地方: 1.正在下载某个文件,但是该Activity销毁了.此时要中断文件的下载操作. 2.再次进入该文件管理Activity时,要判断出某个文件是否是有效的. 我的实现思路是这样: 文件管理Activity;文件下载DownloadLoope

类似京东商城客户端应用源码

IOS商城,电商开源APP,类似京东商城,天猫商城,淘宝,去年开发的一个项目,现在把它分享出来.服务端是java 商城,对应项目是Shop-for-JavaWeb1.App使用MVC框架完成开发.2.使用CocoaPods引入各大第三方组件:pod 'Masonry', '~> 0.6.4'pod 'AFNetworking', '~> 2.6.3'pod 'TouchJSON', '~> 1.1'pod 'SDWebImage', '~> 3.7.1'pod 'FMDB', '~

读书笔记-HBase in Action-第二部分Advanced concepts-(3)非Java客户端

HBase Shell HBase shell使用起来最方便,进入HBase shell控制台即可使用. $ $HBASE_HOME/bin/hbase shell 常见操作有create(创建表)/put(插入或更新数据)/get(根据rowkey查询)/scan(范围查询)/delete(删除列)/deleteAll(根据rowkey删除整行数据)/disable&drop(禁用表之后再删除). 基于数据库的项目,往往会在某个目录下存储专门的sql脚本,记录每次迭代数据库变更:同理,HBas

如何利用cURL和python对服务端和web端进行接口测试

工具描述 cURL是利用URL语法在命令行方式下工作的文件传输工具,是开源爱好者编写维护的免费工具,支持包括Windows.Linux.Mac等数十个操作系统,最新版本为7.27.0,但是我推荐大家使用7.26.0,从这里可以下载7.26.0版本. 以下是官方介绍的翻译: cURL是一个使用URL语法来传输数据的命令行工具,支持DICT,FILE,FTP,FTPS,GOPHER,HTTP,HTTPS,IMAP,IMAPS,LDAP,LDAPS,POP3,POP3S,RTMP,RTSP,SCP,S

锐捷Windows认证客户端常见问题及处理方法

1:无法开机自启动? A:在客户端设置界面中勾选开机自动运行项,并检查系统或第三方软件(主要是第三方WIFI或外挂之类软件)是否配置了阻止客户端的自动运行,可通过卸载或彻底停止相关软件然后测试客户端来确认. 2:无法接收到通告消息? A:在客户端设置界面中勾选校园网消息提醒项.如图所示: 3:认证成功后掉线并弹出提示信息请卸载所有第三方WIFI程序以及外挂软件? A:可以先尝试关闭WiFi软件设置项的校园网模式,或者按照提示信息卸载第三方WiFi,并重启客户端或重启系统. 猎豹WIFI如图所示:

OpenStack IdentityService Keystone V3 API Curl实战

v3 API Examples Using Curl <Tokens> 1,Default scope 获取token Get an token with default scope (may be unscoped): Tips CLI如下: curl -i \  -H "Content-Type: application/json" \  -d '{ "auth": {    "identity": {      "me

Silverlight客户端调用WCF服务难题解疑

Silverlight客户端调用WCF服务在实际使用中经常会出现的问题就是无法直接应用类文件和配置文件.微软针对这一情况已经给出了解决办法.WCF开发框架可以帮助我们实现可靠性较高的跨平台解决方案.对于这样一款功能性较强的工具,我们在实际使用中通常也会遇到一些问题.在这里就来了解一下其中Silverlight客户端调用WCF服务的一些难题解疑. WCF服务端做好后,可以通过SVCUTIL.exe工具生成客户端代码和配置文件,这些内容比较简单,在这里就不做详细介绍. 但是,如果使用Silverli

《CURL技术知识教程》系列技术文章整理收藏

<CURL技术知识教程>系列技术文章整理收藏 1PHP采集相关教程之一 CURL函数库 2php中通过curl模拟登陆discuz论坛的实现代码 3php中通过curl smtp发送邮件 4PHP curl 并发最佳实践代码分享 5CURL的学习和应用(附多线程实现) 6php curl模仿ftp文件上传代码 7php使用curl来获取远程图片 8PHP Curl多线程原理实例详解 9curl不使用文件存取cookie php使用curl获取cookie示例 10php使用curl抓取qq空间

curl抓取网页内容php

1.cURL  curl是客户端向服务器请求资源的工具 2.cURL使用场景 网页资源:网页爬虫 webservice数据接口资源:动态获取接口数据 天气 号码归属地 ftp资源:下载ftp服务器里面的文件 其他资源:所有网络资源都可以用cURL访问和下载 3.在php中判断是否支持 linux判断是否支持 php -i | grep cURL windows是否支持 php -i 4.在php中使用cURL 1.初始化cURL  curl_init(); 2.向服务器发送请求 接受服务器数据