dotnet-httpie 0.2.0 Released

Posted dotNET跨平台

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了dotnet-httpie 0.2.0 Released相关的知识,希望对你有一定的参考价值。

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/valuesdotnet-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

以上是关于dotnet-httpie 0.2.0 Released的主要内容,如果未能解决你的问题,请参考以下文章

浅谈.htaccess文件--避免滥用.htaccess文件

apache开启.htaccess及.htaccess的使用方法

.htaccess 这个网页有一个重定向循环 htaccess

apache开启.htaccess及.htaccess的使用方法

.htaccess相关问题

.htaccess文件得用途