windows安装httpie,jqlang

在上篇文章中,我们详细介绍了chocolatey安装gradle并解决了无法在idea中使用的问题。接下来我们继续使用chocolatey安装httpie和jqlang,并在powershell中使用。

httpie

httpie是一个http客户端,基于命令行。你可以理解为它是一个命令行的postman。

安装

仍是以管理员身份运行powershell,执行choco install httpie命令。在这里插入图片描述
这里输入a(全部选是)按回车,大小写都可。等待安装完成即可。

使用

现在,你可以通过普通权限的powershell来使用httpie了。例如我们这里使用它调一个接口:

http localhost:8080/user/getById/15887324334451507
// 我们可以省略localhost,上述请求可以写成http :8080/user/getById/15887324334451507
// 结果
HTTP/1.1 200
Connection: keep-alive
Content-Type: application/json
Date: Fri, 09 Aug 2024 18:26:12 GMT
Keep-Alive: timeout=60
Transfer-Encoding: chunked

{
    "code": 200,
    "data": {
        "key": "15887324334451507",
        "value": "张三"
    },
    "msg": "success",
    "result": true
}

在这里插入图片描述

请求方式
GET
默认为GET请求
1. 无传参
http :8080/user/list
2. url传参
http :8080/user/list id==1   --> http ':8080/user/list?id=1'
http :8080/user/list ids==1,2,3,4 --> http ':8080/user/list?ids=1,2,3,4' ==> http ':8080/user/list?ids=1&ids=2&ids=3&ids=4'
POST
1. 无传参
http POST :8080/user/update
2. 有传参(body json),带Header
http :8080/team/bind teamId=1 userIds:='[1, 2, 3, 4]' Authorization:xxxxxxx
--> http :8080/team/bind <<<'{"teamId":1, "userIds":[1, 2, 3, 4]}' Authorizaiton:xxxxxxx
也可以将Authorization等的内容放到文件中,直接Authorization:@文件路径。例如:Authorization:@/Users/user.txt

省略。。。。去看文档

jqlang

是一个json的格式化工具,也是基于命令行。可以结合httpie一起使用。

安装

以管理员运行powershell,执行choco install jq

编码修复

jq只支持Unicode UTF-8。所以Windows的编码格式需要更改一下。

更改全局编码
  1. 打开控制面板->查看方式选择类别->点击时钟和区域->选择区域,按图选中使用Unicode UTF-8全球语言支持,一路确定,提示重启电脑
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
  2. 重启完成后,以管理员运行powershell。
  3. 打开 PowerShell 并输入以下命令来编辑配置文件:
notepad $PROFILE
  1. 如果配置文件不存在,会提示你创建一个新的文件。在文件中添加以下内容:
$OutputEncoding = [System.Text.UTF8Encoding]::new()
[Console]::OutputEncoding = [System.Text.Encoding]::UTF8
[Console]::InputEncoding = [System.Text.Encoding]::UTF8

保存并关闭文件。这样,每次启动 PowerShell 时,输出编码都会自动设置为 UTF-8。

上面脚本的内容意思:
// 每次打开Powershell,使用UTF-8编码
$OutputEncoding = [System.Text.UTF8Encoding]::new()
// 使用Powershell读取和写入文件时,使用UTF-8编码
[Console]::OutputEncoding = [System.Text.Encoding]::UTF8
[Console]::InputEncoding = [System.Text.Encoding]::UTF8

使用

格式化Json数据:

PS C:\Users\shang> echo '[{"id": "first", "val": 1}, {"id": "second", "val": 2}]' | jq
[
  {
    "id": "first",
    "val": 1
  },
  {
    "id": "second",
    "val": 2
  }
]
PS C:\Users\shang>

查询json中的数据

# powershell中双引号需要加反斜杠,mac中不需要
PS C:\Users\shang> echo '[{"id": "first", "val": 1}, {"id": "second", "val": 2}]' | jq '.[] | select(.id == \"second\")'
{
  "id": "second",
  "val": 2
}
PS C:\Users\shang>
和httpie结合使用
# 先看一下原始数据,-b的意思是只输出body的内容,不输出header信息,内容如下:
PS C:\Users\shang> http localhost:8080/user/getById/15887324334451507 -b
{
    "code": 200,
    "data": {
        "key": "15887324334451507",
        "value": "张三"
    },
    "msg": "success",
    "result": true
}

# 现在我们只想要看到data中的数据,其他的也不关心
PS C:\Users\shang> http localhost:8080/user/getById/15887324334451507 -b |jq .data
{
  "key": "15887324334451507",
  "value": "张三"
}

# 甚至如果我们得到的data是个数组,我们可以单独提取出数组中元素的key
PS C:\Users\shang> http localhost:8080/user/list -b |jq .data[].key
"33941681737555284"
"33965884914177985"
"33507958405896566"

# 可以去掉它们的双引号
PS C:\Users\shang> http localhost:8080/user/list -b |jq .data[].key -r
33941681737555284
33965884914177985
33507958405896566

# 在所有用户中找到张三
PS C:\Users\shang> http localhost:8080/user/list -b |jq '.data[] |select(.key == \"15887324334451507\")'
{
  "key": "15887324334451507",
  "value": "张三"
}

或者

PS C:\Users\shang> http localhost:8080/user/list -b |jq '.data[] |select(.value == \"张三\")'
{
  "key": "15887324334451507",
  "value": "张三"
}
PS C:\Users\shang>

总结

作为强大的http 命令行客户端,httpie的功能绝不止于此,官方文档上也有更为详尽的说明;而jq作为一个强大的json数据处理工具,其功能本文也仅仅涉及到一小部分,例如它可以直接向json数据中添加数据等。

欢迎讨论!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值