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

gdal库对ENVI文件的一点支持不好

作者:朱金灿来源:http://blog.csdn.net/clever101使用GDALOpen函数打开ENVI的img文件,如果使用更新的方式即GA_Update会改写对应的hdr文件。改写hdr文件后重新读取hdr文件,就会导致其投影信息读不出来。但是如果采用GA_ReadOnly即…

C# Dispose模式

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

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

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

linux之内核剖析

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

C# 中使用HttpClient读取大型Json数据集

问题:如何使用HTTP读取大型JSON数据?在工作中我们经常需要调用api获取数据,这些数据大多数情况下都小型的,比如分页获取数据等。通常不使用HTTP方式传输大型数据。然而再最近的一工作中,需要调用[Salesforce] 的api传输…

判断质数5个程序

1、 #include <stdio.h>int main(){ int i,no; unsigned long counter0; for(no2;no<1000;no) { for(i2;i<no;i) { counter; if(no%i0) break; } if(no i) printf("%d\n",no); } printf("乘除运算的次数&#xff1a;%lu\n",counter); return…

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

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

希尔排序算法的实现

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

linux c之信号signal处理机制

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

python不能分配给操作员_Python:无法分配给li

运算符的左侧需要是变量。你在这里做的是告诉python&#xff1a;“你知道第一个吗&#xff1f;将其设置为输入的字符串。“。1是文字数字&#xff0c;而不是变量。1总是1&#xff0c;您不能将其“设置”为其他值。变量就像一个可以存储值的框。1是可以存储在变量中的值。input调…

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

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

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

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

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

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

控制器方法错误处理

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

linux最常用的20条命令

玩过Linux的人都会知道&#xff0c;Linux中的命令的确是非常多&#xff0c;但是玩过Linux的人也从来不会因为Linux的命令如此之多而烦恼&#xff0c;因为我们只需要掌握我们最常用的命令就可以了。当然你也可以在使用时去找一下man&#xff0c;他会帮你解决不少的问题。然而每个…