zoukankan      html  css  js  c++  java
  • cURL和HTTPie

    http://lingxiankong.github.io/blog/2014/08/19/curl-httpie/

    前两天在网上看到一个号称比cURL更牛逼的命令行工具HTTPie,提供命令行交互方式来访问HTTP服务。其实我本人平常用cURL就比较少(因为喜欢GUI界面),但还是经受不住好奇心的驱使,晚上回家连上VPN,在服务器上简单试了一下–HTTPie果然强大。

    先说cURL的基本使用方法,curl -X METHOD -H HEADER -i,后面的-i是表示显示返回消息的头部,如果你使用cURL访问OpenStack,那么这个选项在获取UUID类型的token时必不可少。

    为了使用cURL访问OpenStack,我们先创建一个文件/opt/temp/auth.json,内容为:

    1. {
    2. "auth": {
    3. "identity": {
    4. "methods": ["password"],
    5. "password": {
    6. "user": {
    7. "id": "54cce50afba748889017143c7dda0bc9",
    8. "password": "passwd"
    9. }
    10. }
    11. },
    12. "scope": {
    13. "project": {
    14. "domain": {
    15. "name": "Default"
    16. },
    17. "name": "admin"
    18. }
    19. }
    20. }
    21. }

    熟悉OpenStack的童鞋可以看出来,这就是发送到Keystone V3获取租户token的请求消息体,我这里使用admin租户,用户id和password请根据你的实际环境修改。

    有了请求消息体,我们使用cURL发送消息:

    1. curl -i -X POST -H "Content-Type: application/json" -d @/opt/temp/auth.json http://10.250.10.233:35357/v3/auth/tokens

    这里-d后面表示请求消息体,如果消息体在文件中,那么使用@符号作为前缀对文件进行读取。返回如下: 再来查询一下环境中的虚拟机:

    1. curl -i -X GET -H "Content-Type: application/json" -H "X-Auth-Token:0a9d6927b0b447e0a8f1dbdd98ebfd81" http://10.250.10.233:8774/v2/1239a5497568464b89688806afe11f7c/servers

    虽然消息正常返回,但看起来很乱,返回的json消息体也不方便阅读,如果想从返回消息体中获取一些信息是比较困难的。

    下面该HTTPie上场了!

    先安装。pip install httpie

    HTTPie基于python编写,内部使用了Requests和Pygments库。

    HTTPie的用法要比cURL直观很多,没有那么多选项,基本上心里怎么想就怎么写,默认输入和输出都是json格式 (而cURL必须要指定-H "Content-Type: application/json"),具体可查阅HTTPie的文档。

    同样是实现上面的获取token和查询虚拟机的功能,使用HTTPie的体验如下。 我们仍然使用/opt/temp/auth.json文件作为请求消息体,命令如下:

    1. http POST http://10.250.10.233:35357/v3/auth/tokens @/opt/temp/auth.json
    2. http GET http://10.250.10.233:8774/v2/1239a5497568464b89688806afe11f7c/servers X-Auth-Token:df76d62a729f4544a9225f4a8d2bfa1a

    直接上图:

    看到了吧!HTTPie返回的消息体自动做了高亮和格式化!

    但是如果PUT操作呢?消息体该如何写?其实也很简单,举个例子:

    1. http PUT api.example.com/person/1 name=John age:=29 married:=false hobbies:='["http", "pies"]'

    name:=value这种格式表示非string的值。

    这篇文章的目的是为了抛砖引玉,在实际使用中cURL和HTTPie都有很多高级用法,我这里仅仅是最简单的使用场景(但其实对于访问OpenStack来说,似乎足够了)。从实验结果上看,虽然HTTPie确实比cURL强大很多,但对于我个人而言,始终不喜欢命令行操作,可能有些人觉得我不够“极客”,但我确实觉得有些事情使用命令行效率太低。相比于cURL和HTTPie,chrome下的Postman才是我的最爱

  • 相关阅读:
    UVa OJ 148 Anagram checker (回文构词检测)
    UVa OJ 134 LoglanA Logical Language (Loglan逻辑语言)
    平面内两条线段的位置关系(相交)判定与交点求解
    UVa OJ 130 Roman Roulette (罗马轮盘赌)
    UVa OJ 135 No Rectangles (没有矩形)
    混合函数继承方式构造函数
    html5基础(第一天)
    js中substr,substring,indexOf,lastIndexOf,split等的用法
    css的textindent属性实现段落第一行缩进
    普通的css普通的描边字
  • 原文地址:https://www.cnblogs.com/kungfupanda/p/5548483.html
Copyright © 2011-2022 走看看