龙空技术网

使用 dotnet-httpie 执行 http 文件请求

opendotnet 107

前言:

此刻咱们对“aspnet自定义类如何引用”都比较看重,姐妹们都想要了解一些“aspnet自定义类如何引用”的相关内容。那么小编在网络上收集了一些对于“aspnet自定义类如何引用””的相关内容,希望各位老铁们能喜欢,大家快快来学习一下吧!

使用 dotnet-httpie 执行 http 文件请求Intro

最近微软在 VS 上开始支持了 http/rest 文件,我们除了 vscode 之外也可以使用 vs 来编辑 http 文件和执行 http 请求了,可以参考:

有时候想命令行执行,不想打开 vs/vscode,于是在之前开发的 dotnet-httpie 小工具上增加了执行 http 文件请求的功能

SampleGet Started

如下示例,是一个 http 文件里的内容, # 或者 // 表示注释 ,它包含了两个 http 请求,两个请求之前用 ### 分隔开来,

第一个是一个 GET 请求,请求地址是

第二个请求是一个 POST 请求, post 一个 json request body 来登录

# Send request to get notice from reservation site

GET

###

# Sign sparktodo

POST

Content-Type: application/json; charset=utf-8

{

"email": "weihanli@outlook.com",

"password": "Test1234"

}

可以看到每个 http request 和请求报文其实是很像的,这样就非常的简洁清晰

Variable

再来看一个使用到变量的示例,可以用 @ 来声明变量,如果是在 request 之外的可以被当作是文件级别的变量,如果是在某个 request 内的则只有这个 request 可以使用这个文件,使用变量时使用 {{variableName}} 即可,例子如下:

@baseUrl = 

###

# @name notice # vs not supported by now

GET {{baseUrl}}/api/notice

Accept: application/json

###

# @name reservationPlaces

@acceptMediaType = application/json

GET {{baseUrl}}/api/ReservationPlaces

Accept: {{acceptMediaType}}

Moreover

目前 vs 的支持比较有限,实用性有点不太够,dotnet-httpie 支持了部分 vscode 插件 RestSharp 的功能

Environment Variable Reference

首先我们可以引用环境变量,有一些比较像 api-key/password 等敏感的信息可能会放在环境变量,所以觉得环境变量的引用还是比较常见的,对于环境变量我们可以使用 {{$processEnv envName}} 来引用,觉得 processEnv 有点太长了,也支持使用 env 来代替 processEnv,示例如下:

GET {{baseUrl}}/api/ReservationPlaces?t={{$env timestamp}}

但是 vscode 的 RestClient 插件并不支持,如果要使用 RestClient 执行请求的话,建议使用 processEnv

Named request

request 支持使用 # @name requestName 或 # @name=requestName 或 // @name requestName 或 // @name=requestName 来指定 request 的 name

# @name reservationPlaces

GET {{baseUrl}}/api/ReservationPlaces

Request reference

request 有了 name 之后,我们可以在后续 request 中引用前面 request 的 response 中的内容,如下所示

@baseUrl = sparktodo.weihanli.xyz

###

# @name login

POST

Content-Type: application/json; charset=utf-8

{

"email": "weihanli@outlook.com",

"password": "Test1234"

}

### getVersion

GET

Authorization: Bearer {{login.response.body.$.data.accessToken}}

这里有两个 request,第一个 request 的 name 是 login 第二个 request 引用了 login 请求的 response body 中的 data.accessToken 字段,并将其作为 Auth 用的 Bearer token,也可以通过 {{requestName.response.headers.headerName}} 引用 response header

dotnet-httpie

使用 dotnet-httpie 执行 http 请求需要使用 0.7.0 及以上版本

dotnet tool update --global dotnet-httpie

安装好之后执行命令如下:

dotnet-http exec HttpStartedSample.http

exec command 后加 http 文件的路径即可

我们执行一下前面 Request reference 的示例,输出结果如下

login request

request#2More

目前 VSCode RestClient、JetBrains 家的 IDE 和 VS 对 http 文件的支持各异,相对来说感觉 vscode RestClient 的支持更多更完善一些, 更多 RestClient 支持的一些用法可以参考:

希望早点有一个相对统一的规范,这样大家无论使用什么 IDE 在哪里使用能够有一致的体验

通过 request reference, 我们可以使用 http 文件来做一些自动化测试,比如前面的示例,每次先登录获取一个 token 然后借助 token 验证其他的接口

Parse http 文件的代码实现在这里

有需要的童鞋也可以自取

References

标签: #aspnet自定义类如何引用 #aspnet物理路径是什么 #如何查看dotnet版本