北京网站建设最好公司,互动网站建设,柳州哪里有网站建设,天津建设网站的公司哪家好动手造轮子 —— dotnet-HTTPieIntroHTTPie 是一个基于 Python 的 HTTP CLI 工具#xff0c;这也意味着想用 HTTPie 就需要安装 Python 环境#xff0c;不想装 Python 环境#xff0c;于是想用 C# 也写一个类似的东西#xff0c;HTTPie 的语法很简单、简洁而且功能强大这也意味着想用 HTTPie 就需要安装 Python 环境不想装 Python 环境于是想用 C# 也写一个类似的东西HTTPie 的语法很简单、简洁而且功能强大基本可以完全取代 cURL最近写了一个类似的工具 dotnet-HTTPie遵循着 HTTPie 的语法HTTPie 怎么用使用 dotnet-HTTPie 基本也是一样的简化 API 的测试安装dotnet-HTTPie 是一个 dotnet tool所以你可以按照 dotnet tool 的安装方式来进行安装使用下面的命令来安装最新的稳定版 dotnet-HTTPiedotnet tool install --global dotnet-httpie
如果想要使用最新的预览版可以使用下面的命令dotnet tool install --global dotnet-httpie --version *-*
使用指南语法如下http [flags] [Method] URL [item [item]]常用的 HTTP Method 都是支持的 OPTIONS/HEAD/GET/POST/PUT/DELETE/PATCH 都是支持的item 支持三种类型语法QueryStringnametestHeaderX-Api-Key:testRequest-Datanametest, raw data field example(Only effective for JSON): age:10, job:{Id:1,Name:test}(Escape needed for Windows)Sample1http -v https://reservation.weihanli.xyz/health
output:GET /health HTTP/1.1
Host: reservation.weihanli.xyz
Schema: https
Content-Type: application/json;charsetutf-8
User-Agent: dotnet-HTTPie/0.1.0HTTP/1.1 200 OK
Connection: keep-alive
Date: Tue, 03 Aug 2021 14:40:00 GMT
Server: nginx/1.14.1
Transfer-Encoding: chunkedhealthy
不指定 HTTP Method 并且没有 Request Data 的时候默认方法是 GET-v 代表 --verbose 要输出所有的请求和响应信息包括请求头、请求body、响应头和响应body默认地只输出响应头和响应消息体你也可以通过 --print 来更精确的控制输出选项例如只打印请求和响应头信息可以用--printHhH:request headers, B:request body,h:response headers, b:response bodySample2http -v https://reservation.weihanli.xyz/health helloworld Api-Version:2.0 nameXiaoMing age:10 flag:true job:{id:1,name:tester}
output:POST /health?helloworld HTTP/1.1
Host: reservation.weihanli.xyz
Schema: https
Api-Version: 2.0
Content-Type: application/json;charsetutf-8
User-Agent: dotnet-HTTPie/0.1.0{name:XiaoMing,age:10,flag:true,job:{id:1,name:tester}}HTTP/1.1 200 OK
Connection: keep-alive
Date: Tue, 03 Aug 2021 14:39:18 GMT
Server: nginx/1.14.1
Transfer-Encoding: chunkedhealthy
因为没有指定 HTTP Method 又包含 request data所以默认方法是 POST默认的有 Request Data 的时候会把数据组装成 JSON并且会指定 Content-Type 为 application/json 如上所示如果想要使用 form 方式可以指定 -f 或 --formDocker我们也提供了基于 docker 的使用方式可以使用 weihanli:dotnet-httpie:latest 来获取最新的镜像目前 docker 镜像是在 runtime 的镜像里装了一下这个 dotnet tool实现方式可以参考在 dotnet runtime 的容器中安装 dotnet global tool 以及文末的项目源码Design基于中间件的设计通过不同的中间件处理不同的参数flag目前一共分成三种中间件HttpHandlerMiddlewareRequestMiddlewareResponseMiddleware// HttpHandlerMiddleware
serviceCollection.AddHttpHandlerMiddlewareFollowRedirectMiddleware().AddHttpHandlerMiddlewareHttpSslMiddleware();
// RequestMiddleware
serviceCollection.AddRequestMiddlewareQueryStringMiddleware().AddRequestMiddlewareRequestHeadersMiddleware().AddRequestMiddlewareRequestDataMiddleware().AddRequestMiddlewareDefaultRequestMiddleware();
// ResponseMiddleware
serviceCollection.AddResponseMiddlewareDefaultResponseMiddleware();
通过中间件来扩展不同的功能想要支持新的参数和功能注册一个自定义的中间件即可这里借用一下 asp.net core 的中间件的图More我们还提供了一些特别的特性比如指定 --offline 可以打印请求头和请求 Body 而不发送请求针对 localhost 的请求我们可以简化比如访问 http://localhost:5000/api/values 可以使用 :5000/api/values 来访问默认的 schema 是 http如果是 https://localhost:5001/api/values可以通过 --schemahttps 来指定 schema完整脚本http --schemahttps :5001/api/values更多功能等你来发掘~~目前还只支持比较基本和我觉得比较常用的功能还有一些功能需要增加和改进有兴趣的童鞋欢迎 issue 欢迎 PRdotnet-HTTPie 会支持绝大部分 HTTPie 的功能并将优化和改进一些用着不太方便的地方如果你是 curl 用户有大佬做了一个从 curl 到 HTTPie 的工具可以参考 https://curlipie.now.sh/Referenceshttps://github.com/WeihanLi/dotnet-httpieHTTPie docs: https://httpie.io/docsCurl to HTTPie request tool: https://curlipie.now.sh/