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 http,http?=>?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 PrettyJSON 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?BearerRawData
我們在調試 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 sampleMore
除了新的功能和代碼優化,在 CI 方面也做了一些改善和優化,比如我們之前介紹過的?使用 dotnet format 格式化代碼 以及管理項目的 License header 以及?使用 dotnet-outdated 維護項目 nuget 包版本
除此之外還有一些 .NET 6 新特性的應用比如 .NET 6 中的 Logging Source Generator?在這個項目中也有應用,感興趣的可以探索一下哈~
References
https://github.com/WeihanLi/dotnet-httpie/tree/0.2.0
https://www.nuget.org/packages/dotnet-httpie/0.2.0
https://hub.docker.com/repository/docker/weihanli/dotnet-httpie
動手造輪子 —— dotnet-HTTPie
使用 dotnet format 格式化代碼
dotnet-format一鍵應用文件范圍命名空間
File header template
使用 dotnet-outdated 維護項目 nuget 包版本
.NET 6 中的 Logging Source Generator
總結
以上是生活随笔為你收集整理的dotnet-httpie 0.2.0 Released的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: jenkins构建触发器定时任务
- 下一篇: C# Dispose模式