1 Star 0 Fork 0

紫剑真人 / WebApi脚手架

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
贡献代码
同步代码
取消
提示: 由于 Git 不支持空文件夾,创建文件夹后会生成空的 .keep 文件
Loading...
README

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

  1. 调用HttpContext.TraceIdentifier 可获 RequestId
  2. 默认标准返回值会返回 RequestId 属性

源码

2. AddTracingHttpClient

在操作HttpClient时,将HttpContext.TraceIdentifier加入到请求头X-Correlation-ID

当请求头已经存在X-Correlation-IDX-Request-ID时,不会覆盖已有的值

源码

3. EnableJsonStandardized

将格式化JSON功能标准化

  1. 命名方式改为小于+下划线 如 RequestId -> request_id
  2. 时间格式固定为 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

空文件

简介

一键创建WebApi并使用各种标准化功能 展开 收起
C# 等 2 种语言
取消

发行版

暂无发行版

贡献者

全部

近期动态

加载更多
不能加载更多了
1
https://gitee.com/zijian666/WebApiExtensions.git
git@gitee.com:zijian666/WebApiExtensions.git
zijian666
WebApiExtensions
WebApi脚手架
master

搜索帮助