动态 Restful API 生成
介绍
通常在DDD开发架构中,我们写完服务层需要在控制器中写API,今天介绍一个组件 Plus.AutoApi
可以用它来动态生成 Restful 风格的 WebApi,不用写 Controller。
快速使用
在你的应用服务层中添加组件
Install-Package Plus.AutoApi
在 Startup 中注册 AutoApi
public 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 IEnumerable<WeatherForecast> Get(){return WeatherForecast();}[HttpGet("{id}")]public IEnumerable<WeatherForecast> Get(int id){return WeatherForecast();}public IEnumerable<WeatherForecast> Post(){return WeatherForecast();}[HttpPut("{id}")]public IEnumerable<WeatherForecast> Put(int id){return WeatherForecast();}[HttpDelete("{id}")]public IEnumerable<WeatherForecast> Delete(int id){return WeatherForecast();}private static IEnumerable<WeatherForecast> 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 Dictionary<string, 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路由如下:
Samples
https://github.com/Meowv/Plus.AutoApi/tree/master/samples/Plus.AutoApi.Sample
Nuget
https://www.nuget.org/packages/Plus.AutoApi
开源地址
https://github.com/Meowv/Plus.AutoApi
动态 Restful API 生成相关推荐
- Restful API 生成复杂Json数据结构及使用客户端解析该数据结构(三)
前提说明:首先约定接口之前,需要约定接口的参数,接口参数包括输入参数和输出参数 输入参数:指接口调用时输入的参数 输出参数:即接口调用时返回的参数. 那么如果说,约定输入输出参数均需要采用Json结构 ...
- php slim 教程,Slim - 超轻量级PHP Restful API构建框架
下载源码包: http://www.slimframework.com/ 基于Slim的Restful API Sample: require '/darjuan/Slim/Slim.php'; us ...
- springfox源码_【开源项目】springfox-bridge:随心所欲地为非restful接口生成API文档...
一.引言 目前,利用swagger框架为restful接口编写API文档非常流行,在spring web项目中,利用springfox+swagger更是可以通过注解的方式直接进行API文档的生成,这 ...
- Spring Boot 集成Swagger2生成RESTful API文档
Swagger2可以在写代码的同时生成对应的RESTful API文档,方便开发人员参考,另外Swagger2也提供了强大的页面测试功能来调试每个RESTful API. 使用Spring Boot可 ...
- Swagger 生成 PHP restful API 接口文档
需求和背景 需求: 为客户端同事写接口文档的各位后端同学,已经在各种场合回忆了使用自动化文档工具前手写文档的血泪史. 我的故事却又不同,因为首先来说,我在公司是 Android 组负责人,属于上述血泪 ...
- Spring Boot 集成 Swagger 生成 RESTful API 文档
原文链接: Spring Boot 集成 Swagger 生成 RESTful API 文档 简介 Swagger 官网是这么描述它的:The Best APIs are Built with Swa ...
- 整合swagger2生成Restful Api接口文档
整合swagger2生成Restful Api接口文档 swagger Restful文档生成工具 2017-9-30 官方地址:https://swagger.io/docs/specificati ...
- Api2Doc,生成 Restful API 文档
Api2Doc 简介 Api2Doc 专注于 Restful API 文档的自动生成,它的原理与 Swagger2 是类似的, 都是通过反射,分析 Controller 中的信息生成文档,但它要比 S ...
- swagger php 生成api,blog/Swagger生成php restful API接口文档.md at master · lfq618/blog · GitHub...
Swagger生成php restful API接口文档 背景 我们的restful api项目采用yaf框架, 整体结构简单, 我们只需要用swagger扫描 application目录即可. 下面 ...
最新文章
- mysql crm动态列设计_值得收藏:一份非常完整、详细的MySQL规范
- 【深度学习入门到精通系列】Gamma变换(校正)
- 反向传播神经网络 BPNN
- 使用netty搭建一个简单的聊天室
- mybatis delete返回值_面试:谈谈你对MyBatis执行过程之SQL执行过程理解
- gt爵士变形步骤_代码广播简介:您可以编码为24/7的爵士节拍
- 联想ThinkCentre M8400t-n000等高配电脑重装成xp蓝屏0xc000007b代码
- HDOJ2024C语言合法标识符
- nginx启动重启与升级以及检测配置文件
- mysql报1665_mysql错误处理之ERROR 1665 (HY000)_MySQL
- 【渝粤教育】电大中专学前教育学_1作业 题库
- 磁盘列阵技术介绍及其部署
- 撸一个聊天室(vue+koa2+websokect+mongodb)
- 微信网页jssdk使用
- lumia535 刷Android,附教程:看看你的Lumia手机能不能刷安卓!
- ubuntu16.04下安装TensorFlow(GPU加速)----详细图文教程【转】
- 2022年罗振宇“时间的朋友”跨年演讲金句汇总
- wikioi 1550 不明飞行物
- 分享Jupyter notebook
- kubernetes-1.20.x二进制部署