营销类网站如何优化,网站开发商,网站开发一键上架淘宝,哈尔滨创意网站建设介绍通常在DDD开发架构中#xff0c;我们写完服务层需要在控制器中写API#xff0c;今天介绍一个组件 Plus.AutoApi 可以用它来动态生成 Restful 风格的 WebApi#xff0c;不用写 Controller。快速使用在你的应用服务层中添加组件Install-Package Plus.AutoApi在 Startup 中… 介绍通常在DDD开发架构中我们写完服务层需要在控制器中写API今天介绍一个组件 Plus.AutoApi 可以用它来动态生成 Restful 风格的 WebApi不用写 Controller。快速使用在你的应用服务层中添加组件Install-Package Plus.AutoApi
在 Startup 中注册 AutoApipublic void ConfigureServices(IServiceCollection services)
{services.AddAutoApi(x { });
}
AddAutoApi 同时也支持各种 Options 参数可以自行查看。让你的服务直接或者间接实现IAutoApi添加特性[AutoApi]即可示例代码如下[AutoApi]
public class WeatherService : IAutoApi
{private static readonly string[] Summaries new[]{Freezing, Bracing, Chilly, Cool, Mild, Warm, Balmy, Hot, Sweltering, Scorching};public IEnumerableWeatherForecast Get(){return WeatherForecast();}[HttpGet({id})]public IEnumerableWeatherForecast Get(int id){return WeatherForecast();}public IEnumerableWeatherForecast Post(){return WeatherForecast();}[HttpPut({id})]public IEnumerableWeatherForecast Put(int id){return WeatherForecast();}[HttpDelete({id})]public IEnumerableWeatherForecast Delete(int id){return WeatherForecast();}private static IEnumerableWeatherForecast WeatherForecast(){var rng new Random();return Enumerable.Range(1, 5).Select(index new WeatherForecast{Date DateTime.Now.AddDays(index),TemperatureC rng.Next(-20, 55),Summary Summaries[rng.Next(Summaries.Length)]}).ToArray();}
}
需要注意的是你的服务层命名规范默认要以Service或者ApplicationService结尾也可以通过配置替换默认名称。如果你想让某个服务不自动生成API可以给特性传递参数[AutoApi(Disabled true)]让生成的API兼容 Swagger需要添加下面这句代码。services.AddSwaggerGen(options
{options.SwaggerDoc(v1, new OpenApiInfo{Title Plus AutoApi Sample,Version v1.0.0});options.DocInclusionPredicate((docName, description) true);
});
同时自动生成API也可以和控制器共存互不影响。你可以手动指定HTTP方法也可以根据默认规则自动创建。默认自动创建HTTP方法的规则如下static PlusConsts()
{HttpVerbs new Dictionarystring, string(){[add] POST,[create] POST,[post] POST,[insert] POST,[get] GET,[find] GET,[fetch] GET,[query] GET,[update] PUT,[put] PUT,[delete] DELETE,[remove] DELETE};
}
上面代码最终生成的API路由如下Sampleshttps://github.com/Meowv/Plus.AutoApi/tree/master/samples/Plus.AutoApi.SampleNugethttps://www.nuget.org/packages/Plus.AutoApi开源地址https://github.com/Meowv/Plus.AutoApi