首页 文章详情

dotnet-httpie 0.2.0 Released

DotNet NB | 122 2022-02-17 23:26 0 0 0
UniSMS (合一短信)

dotnet-httpie 0.2.0 Released

Intro

dotnet-httpie 是类 httpie 的一个调用 HTTP API 的小工具,可以帮助我们快速测试 API,语法和 httpie 基本一样。

第一个版本发布之后,做了一些重构,使用 System.CommandLine 重写了对于 Option 的支持,并增加了一些新的功能,并且开始使用更多的 .NET 6 新特性。

Features

Command Rename

在第一个版本中,我们是直接使用 http 来调用我们的方法,这样用起来很方便,但是如果和 httpie 一起使用的话,就会有一个被覆盖掉,为了避免这个问题,在新版本中做了重新命名了,新版本中可以使用 dotnet-http 命令,你也可以使用 dotnet httphttp => dotnet-http/dotnet http

使用示例:

dotnet-http :5000/api/values
dotnet-http localhost:5000/api/values
dotnet-http get localhost:5000/api/values
dotnet-http get https://reservation.weihanli.xyz/api/notice --body
dotnet-http post /api/notice title=test body=test-body

但是在使用 docker 的时候还是保留了之前的用法,有一些小纠结,目前我们仍然可以使用 http 来调用,因为 docker 容器中不存在命令冲突的问题,大家觉得 docker 中使用 http 好一些还是使用 dotnet-http 更好一些呢?

System.CommandLine

System.CommandLine 可以用来实现命令行应用程序,很多 dotnet tool 也都是基于它来实现的,微软的 SDK 以及 dotnet-format/dotnet-monitor 也是基于它来实现的命令行交互的,如果你也在尝试做一个命令行工具,可以考虑一下这个

JSON Pretty

在新版本,默认增加了 JSON 的格式化,当 Request Body 或者 Response Body 是 Json 的时候会自动格式化输出,以更加清晰的展示,也可以通过 --pretty=none 来禁用格式化

JSON Pretty

JSON No-pretty

Auth support

新版本增加了简单的 Auth 的支持,目前支持 Basic 认证和 JWT Bearer 认证

增加了一个选项参数, --auth/-a 指定 auth 参数,--auth-type/-A 指定 auth 类型(目前支持 Basic/Bearer,默认是 Basic)

使用示例如下:

dotnet-http "https://reservation.weihanli.xyz/api/Notice?pageNumber=1&pageSize=2" -a='test:test'
dotnet-http "https://reservation.weihanli.xyz/api/Notice?pageNumber=1&pageSize=2" --auth 'test:test'

dotnet-http "https://reservation.weihanli.xyz/api/Notice?pageNumber=1&pageSize=2" --auth "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJqdGkiOiI2OWZhZjhlYTlhZDU0ODQ0ODkyMWFkMWVhMjE3ZjdhNyIsInN1YiI6IndlaWhhbmxpQG91dGxvb2suY29tIiwibmFtZWlkIjoiMSIsIm5iZiI6MTY0MzEyNjg0MSwiZXhwIjoxNjQzMTM0MDQxLCJpc3MiOiJodHRwczovL3NwYXJrdG9kby53ZWloYW5saS54eXoiLCJhdWQiOiJUb2tlbkF1ZGllbmNlIn0.80hiaYJ9LMdQlUC71CGHlkPChoVgqkFYP5ysR3YBUnc" --auth-type jwt
dotnet-http "https://reservation.weihanli.xyz/api/Notice?pageNumber=1&pageSize=2" --auth "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJqdGkiOiI2OWZhZjhlYTlhZDU0ODQ0ODkyMWFkMWVhMjE3ZjdhNyIsInN1YiI6IndlaWhhbmxpQG91dGxvb2suY29tIiwibmFtZWlkIjoiMSIsIm5iZiI6MTY0MzEyNjg0MSwiZXhwIjoxNjQzMTM0MDQxLCJpc3MiOiJodHRwczovL3NwYXJrdG9kby53ZWloYW5saS54eXoiLCJhdWQiOiJUb2tlbkF1ZGllbmNlIn0.80hiaYJ9LMdQlUC71CGHlkPChoVgqkFYP5ysR3YBUnc" --auth-type Bearer
dotnet-http "https://reservation.weihanli.xyz/api/Notice?pageNumber=1&pageSize=2" -a "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJqdGkiOiI2OWZhZjhlYTlhZDU0ODQ0ODkyMWFkMWVhMjE3ZjdhNyIsInN1YiI6IndlaWhhbmxpQG91dGxvb2suY29tIiwibmFtZWlkIjoiMSIsIm5iZiI6MTY0MzEyNjg0MSwiZXhwIjoxNjQzMTM0MDQxLCJpc3MiOiJodHRwczovL3NwYXJrdG9kby53ZWloYW5saS54eXoiLCJhdWQiOiJUb2tlbkF1ZGllbmNlIn0.80hiaYJ9LMdQlUC71CGHlkPChoVgqkFYP5ysR3YBUnc" -A Bearer

RawData

我们在调试 API 的时候,有时候可能是有一个测试的 Request Body,此时我们可能更加想要直接使用这个 Request Body,在新版本增加一个 --raw 选项,来直接配置 Request Body,类似于 curl 里的通过 -d 指定 body,当指定了 --raw 之后,通过 =或者 := 来指定的 body 的参数就会被忽略

使用示例如下:

dotnet-http :5000/api/values --raw='{"categoryName":"test", "parentId": 0}'

在 Windows 上使用时," 需要转义

raw data sample

More

除了新的功能和代码优化,在 CI 方面也做了一些改善和优化,比如我们之前介绍过的 使用 dotnet format 格式化代码 以及管理项目的 License header 以及 使用 dotnet-outdated 维护项目 nuget 包版本

除此之外还有一些 .NET 6 新特性的应用比如 .NET 6 中的 Logging Source Generator 在这个项目中也有应用,感兴趣的可以探索一下哈~

References


推荐阅读:
Kubernetes全栈架构师(Kubeadm高可用安装k8s集群)--学习笔记
.NET 云原生架构师训练营(模块一 架构师与云原生)--学习笔记
.NET Core开发实战(第1课:课程介绍)--学习笔记

点击下方卡片关注DotNet NB

一起交流学习

▲ 点击上方卡片关注DotNet NB,一起交流学习

请在公众号后台


回复 【路线图】获取.NET 2021开发者路线图
回复 【原创内容】获取公众号原创内容
回复 【峰会视频】获取.NET Conf开发者大会视频
回复 【个人简介】获取作者个人简介
回复 【年终总结】获取作者年终总结
回复 加群加入DotNet NB 交流学习群

长按识别下方二维码,或点击阅读原文。和我一起,交流学习,分享心得。


good-icon 0
favorite-icon 0
收藏
回复数量: 0
    暂无评论~~
    Ctrl+Enter