代码拉取完成,页面将自动刷新
快速搭建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();
});
}
HttpContext.TraceIdentifier
可获 RequestId
RequestId
属性在操作HttpClient
时,将HttpContext.TraceIdentifier
加入到请求头X-Correlation-ID
当请求头已经存在
X-Correlation-ID
或X-Request-ID
时,不会覆盖已有的值
将格式化JSON功能标准化
所有WEBAPI支持跨域
所有请求会将请求正文缓冲到内存中,以便请求体可被多次读取
详见: 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]"); // 支持多次调用
});
}
可打开/swagger/index.html
访问WebApi文档
格式化所有返回值
绑定配置类
定义一个配置文件
{
"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;
}
将指定接口添加为控制器
定义服务接口,并标记[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的服务接口
});
}
无
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。