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 来禁用格式化

43c6728154ce5fba21ef3b300db3008d.png

JSON Pretty

7de3b68be91255fb472cbca4caf74116.png

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

f02cf780cf1d4ce9cd20aae65c95a352.png

d81f114eee508c2b5b576d46010b90dd.png

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 上使用时," 需要转义

9735bf7cb63f08d023ecfe439a36d667.png

raw data sample

More

除了新的功能和代码优化,在 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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/292064.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

黑色边影,

多次 设置frame,并用了动画, [UIViewbeginAnimations:nilcontext:nil]; [UIViewsetAnimationDelegate:self]; [UIViewsetAnimationCurve:[[[notification userInfo] objectForKey:UIKeyboardAnimationCurveUserInfoKey] intValue]]; [UIViewsetAnimationDuration:[[…

分子模拟软件amber_容天AMBER优化的GPU解决方案

AMBER认证的GPU系统AMBER认证GPU系统提供商容天更快地运行MD仿真容天与AMBER的主要开发商合作开发了交钥匙解决方案,为GPU加速的生物分子模拟提供增值系统。经过验证的系统,每个用户的CPU,GPU,内存和存储具有适当的平衡。从工作站…

linux c之孤儿进程与僵尸进程[总结]

转载地址:http://www.cnblogs.com/Anker/p/3271773.html 1、前言 之前在看《unix环境高级编程》第八章进程时候,提到孤儿进程和僵尸进程,一直对这两个概念比较模糊。今天被人问到什么是孤儿进程和僵尸进程,会带来什么问题&#xf…

留学申请中,你们怎么老让我做科研啊?

全世界只有3.14 % 的人关注了爆炸吧知识太太太太闹心了,真的,留学申请准备这准备那已经很糟心了,怎么总看到让我做科研的广告啊,刚开始看看没在意,越来越多越来越多,不做都感觉赶不上潮流,不做就…

C# Dispose模式

目的为了及时释放宝贵的非托管资源和托管资源,并且保证资源在被 gc 回收的时候可以正确释放资源,同时兼顾执行效率。必须遵循的事实1 . 托管资源释放:  由另一线程的 gc 进行释放,当托管的对象没有被引用时,就会在“…

在ASP.NET项目中使用CKEditor +CKFinder实现图片上传功能

前言 之前的项目中一直使用的是FCKeditor,昨天突然有个想法:为什么不试一下新的CKEditor呢?于是花了大半天的时间去学习它的用法,现在把我的学习过程与大家分享一下。 谈起FCKeditor,相信没几个Web程序员不知道的吧。不…

linux之内核剖析

Linux 内核简介 现在让我们从一个比较高的高度来审视一下 GNU/Linux 操作系统的体系结构。您可以从两个层次上来考虑操作系统,如图 2 所示。 图 2. GNU/Linux 操作系统的基本体系结构 上面是用户(或应用程序)空间。这是用户应用程序执行的地…

linux笔记 3-4 SMTP,.配置电子邮件传输

***************4.配置电子邮件传输*****************##1.基本电子邮件配置##配置dns服务,添加MX记录两台服务器分别配置 /etc/postfix/main.cf文件myhostname--主机名mydomain--域名myorigin--重写本地发布的电子邮件,使其显示为来自该域。这样有助于确保响应返回入…

希尔排序算法的实现

希尔排序(Shell Sort)是插入排序的一种,它是针对直接插入排序算法的改进。该方法又称缩小增量排序,因DL.Shell于1959年提出而得名。 希尔排序实质上是一种分组插入方法。它的基本思想是:对于n个待排序的数列,取一个小于…

linux c之信号signal处理机制

最近同事的程序设计过程中用到了Linux的signal机制,从而引发了我对Linux中signal机制的思考。Signal机制在Linux中是一个非常常用的进程间通信机制,很多人在使用的时候不会考虑该机制是具体如何实现的。signal机制可以被理解成进程的软中断,因…

技术分享 | 微服务模式下如何高效进行API测试

导读:微服务架构下,API 测试的最大挑战来自于庞大的测试用例数量,以及微服务之间的相互耦合。基于这种挑战,如何进行高效的API测试,选择什么样的方式就比较重要,此文主要是采用契约测试的方法来对微服务模式…

由CloudStack项目引起的ESXI嵌套虚拟化引起的二级虚拟机无法被访问

关于这个问题,主要以文字描述为主,最终解决方法其实就一个步骤。问题描述:某客户需要部署某企业的云平台,但是由于年前没有足够的物理机资源,所以提供的资源均为虚拟机,现在让我们做技术评估。其实观察整个…

美女的床真的好难爬......

1 地中海式茂密?▼2 阴着呐▼3 拜拜了您呐▼4 草莓从哪里来▼5 爷青结系列▼6 没点才艺还住不了酒店了▼7 美女的床果真很难爬(真从500平大床中醒来)▼8 数学能有多有趣▼你点的每个赞,我都认真当成了喜欢

控制器方法错误处理

错误处理一直是开发维护阶段需要重点关注的一块,控制器中方法原则上都需要处理错误。 1、添加BaseController 路径:nweb\src\main\java\com\nankang\cati\nweb\controller\BaseController.java 所有的控制器都继承BaseController 2、使用: 1&…

EF Core 6 新功能汇总(一)

在这篇文章中,你将看到 EF Core 6 中的十个新功能,包括新的特性标注,对时态表、稀疏列的支持,以及其他新功能。1Unicode 特性在 EF Core 6.0 中,新的 UnicodeAttribute 允许你将一个字符串属性映射到一个非 Unicode 列…

DS5020配置集群存储

一、方案设计 计划给某公司服务器制作集群,存储划分大致如下: 1、 将存储磁盘制作为raid5; 2、 划分两个Storage Partition给两类集群使用,一类为数据库服务,一类为各种应用服务 二、存储的连接 1、存储的简介 Serial …

RequireJS首次加载偶尔失败

现象:第一次加载JS文件,首次加载偶尔失败; 原因:require([jquery, operamasks, zTree, jQueryCookie],中前后引用同步加载; 解决方式:shim声明前置加载; 配置如下: requi…

linux之file命令总结

解释: file是通过查看文件的头部内容,来获取文件的类型使用file命令可以知道某个文件究竟是二进制(ELF格式)的可执行文件, 还是Shell Script文件,或者是其它的什么格式。 file能识别的文件类型:目录、Shel…