zijian666.WebApiExtensions
1.1.3-beta
This is a prerelease version of zijian666.WebApiExtensions.
There is a newer prerelease version of this package available.
See the version list below for details.
See the version list below for details.
dotnet add package zijian666.WebApiExtensions --version 1.1.3-beta
NuGet\Install-Package zijian666.WebApiExtensions -Version 1.1.3-beta
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="zijian666.WebApiExtensions" Version="1.1.3-beta" />
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add zijian666.WebApiExtensions --version 1.1.3-beta
The NuGet Team does not provide support for this client. Please contact its maintainers for support.
#r "nuget: zijian666.WebApiExtensions, 1.1.3-beta"
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
// Install zijian666.WebApiExtensions as a Cake Addin #addin nuget:?package=zijian666.WebApiExtensions&version=1.1.3-beta&prerelease // Install zijian666.WebApiExtensions as a Cake Tool #tool nuget:?package=zijian666.WebApiExtensions&version=1.1.3-beta&prerelease
The NuGet Team does not provide support for this client. Please contact its maintainers for support.
WebApi 脚手架
介绍
快速搭建WebApi应用
更新日志
安装
nuget - zijian666.WebApiExtensions
项目示例
使用说明
public void ConfigureServices(IServiceCollection services)
{
services.AddControllers()
.AddWebApiOptions(option => {
// 设置需要开启的功能
option.EnableTraceIdentifier();
option.AddTraceableHttpClient("");
option.EnableJsonStandardized();
option.EnableCors();
option.EnableRequestBuffering("api/test/hello");
option.EnableSwaggerGen();
option.EnableResultStandardized();
option.BindConfigurationSection();
option.AddInterfacesAsControllers();
});
}
功能说明
1. EnableTraceIdentifier
- 调用
HttpContext.TraceIdentifier
可获 RequestId - 默认标准返回值会返回
RequestId
属性
2. AddTracingHttpClient
在操作HttpClient
时,将HttpContext.TraceIdentifier
加入到请求头X-Correlation-ID
当请求头已经存在
X-Correlation-ID
或X-Request-ID
时,不会覆盖已有的值
3. EnableJsonStandardized
将格式化JSON功能标准化
- 命名方式改为小于+下划线 如 RequestId → request_id
- 时间格式固定为 yyyy-MM-dd HH:mm:ss
4. EnableCors
所有WEBAPI支持跨域
5. EnableRequestBuffering
所有请求会将请求正文缓冲到内存中,以便请求体可被多次读取
详见: HttpRequestRewindExtensions.EnableBuffering
可设置不需要缓存的例外情况情况
使用说明
public void ConfigureServices(IServiceCollection services)
{
services.AddControllers()
.AddWebApiOptions(option => {
option.EnableRequestBuffering("api/test/hello", "api/abc/[api1|api2]"); // 支持前缀匹配和正则匹配
option.EnableRequestBuffering(""api/abc/[api3]"); // 支持多次调用
});
}
6. EnableSwaggerGen
可打开/swagger/index.html
访问WebApi文档
7. EnableResultStandardized
格式化所有返回值
8. BindConfigurationSection
绑定配置类
使用说明
定义一个配置文件
{
"ali": {
"AppKey": "AppKey",
"SecretKey": "SecretKey"
}
}
定义一个配置类
[ConfigurationSection("ali")]
public class AliConfig
{
public string AppKey { get; set; }
public string SecretKey { get; set; }
}
启用BindConfigurationSection
public void ConfigureServices(IServiceCollection services)
{
services.AddControllers()
.AddWebApiOptions(option => {
option.BindConfigurationSection();
});
}
服务注入
public class TestController : ApiControllerBase
{
private readonly AliConfig _aliConfig;
public TestController(AliConfig aliConfig)
=> _aliConfig = aliConfig;
}
8. AddInterfacesAsControllers
将指定接口添加为控制器
使用说明
定义服务接口,并标记[HttpApi]
,或手动注入
默认路由 /api/[controller]/[action],可以通过设置 HttpApiAttribute.
Template
修改默认值
[HttpApi]
public interface IDemoService
{
string Hello();
int GetNumber();
}
实现接口
略
注入
public void ConfigureServices(IServiceCollection services)
{
services.AddControllers()
.AddWebApiOptions(option => {
option.AddInterfacesAsControllers(); // 注入标记为 [HttpApi] 的所有接口
// option.AddInterfacesAsControllers("WebApiDemo.Services");// 注入指定命名空间下的所有接口
// option.AddInterfacesAsControllers(typeof(IDemoService)); // 注入需要转换为Controller的服务接口
});
}
注意事项1
无
Product | Versions Compatible and additional computed target framework versions. |
---|---|
.NET | net6.0 is compatible. net6.0-android was computed. net6.0-ios was computed. net6.0-maccatalyst was computed. net6.0-macos was computed. net6.0-tvos was computed. net6.0-windows was computed. net7.0 was computed. net7.0-android was computed. net7.0-ios was computed. net7.0-maccatalyst was computed. net7.0-macos was computed. net7.0-tvos was computed. net7.0-windows was computed. net8.0 was computed. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. |
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.
-
net6.0
- Swashbuckle.AspNetCore.SwaggerGen (>= 6.4.0)
- Swashbuckle.AspNetCore.SwaggerUI (>= 6.4.0)
- zijian666.Converts (>= 5.2.3)
- zijian666.Converts.Json (>= 5.2.4)
- zijian666.Core.Abstractions (>= 2.0.2)
- zijian666.DI (>= 1.0.7)
- zijian666.DI.Autowired (>= 1.0.7)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.
Version | Downloads | Last updated |
---|---|---|
1.1.13.1-beta | 19 | 10/31/2024 |
1.1.13-beta | 30 | 10/25/2024 |
1.1.10.18-beta | 41 | 9/23/2024 |
1.1.10.13-beta | 64 | 8/13/2024 |
1.1.10.9-beta | 62 | 7/16/2024 |
1.1.10.8-beta | 67 | 7/9/2024 |
1.1.10.7-beta | 66 | 7/2/2024 |
1.1.10.6-beta | 52 | 6/28/2024 |
1.1.10.3-beta | 49 | 6/28/2024 |
1.1.10.2-beta | 46 | 6/27/2024 |
1.1.10.1-beta | 55 | 6/26/2024 |
1.1.10-beta | 49 | 6/25/2024 |
1.1.8-beta | 54 | 6/14/2024 |
1.1.7-beta | 52 | 3/12/2024 |
1.1.6-beta | 55 | 3/4/2024 |
1.1.5-beta | 64 | 12/27/2023 |
1.1.4-beta | 120 | 10/15/2023 |
1.1.3-beta | 102 | 8/2/2023 |
1.1.2-beta | 98 | 7/23/2023 |
1.1.1-beta | 88 | 7/20/2023 |
1.0.1.2-beta | 84 | 7/11/2023 |
0.0.1-dev | 127 | 6/10/2022 |
0.0.0.9-dev | 126 | 5/31/2022 |
0.0.0.8-dev | 141 | 4/20/2022 |
0.0.0.7-dev | 146 | 1/12/2022 |
0.0.0.6-dev | 137 | 1/11/2022 |
0.0.0.5-dev | 170 | 1/7/2022 |