【开源】AspnetCore 2.0 自动API文档生成组件,支持protobuffer
本文地址
http://www.cnblogs.com/likeli/p/8204054.html
关于
API文档自动生成,用于对APP端的开发帮助文档生成,默认ProtoBuffer传输格式。
本项目并不是RESTful风格,是面向功能的API类型。APiDoc的作用是根据定义好的API接口和注释来自动生成给内部开发者提供的API对接文档。
开源地址
https://github.com/li-keli/AspnetCoreApiDoc
Nuget下载
Install-Package AspnetCoreApiDoc
关于ProtoBuffer
官方描述:
Protocol buffers are a language-neutral, platform-neutral extensible mechanism for serializing structured data.
生成文档示例



说明文档
NO.1
引用项目后,在Startup.cs中的ConfigureServices方法加入如下代码,进行服务注册:
//注册API文档服务
services.AddProtoMvc(op =>
{
op.IsOpenDoc = true; // 开放文档访问
op.ApiOptions = new ApiOptions
{
//API文档访问的路由; 推荐和API地址访问保持一致
Host = "/core/v1",
ApiName = "样例API文档",
APiVersion = "v1.0",
Copyright = "Copyright©2017-2018 api.com All Rights Reserved. ",
ProtoBufVersion = ProtoBufEnum.Proto3,
NetworkDocs = new List<NetworkDoc>
{
new NetworkDoc
{
Title = "默认网络文档一",
Url = "https://www.baidu.com/"
},
new NetworkDoc
{
Title = "我的博客",
Url = "http://www.cnblogs.com/likeli/"
},
}
};
//此处配置ES日志服务地址
//op.ESOptions = new ESOptions
//{
// Uri = "http://192.168.0.1:9200",
// DefaultIndex = "test-log",
//};
});
NO.2
在Configure方法启用服务:
app.UseStatusCodePages()
.UseApi(); //启用API文档生成
NO.3
在需要生成API文档的控制器Controller``或方法Action上添加ApiDoc特性标记
例如:
Controller上添加:
[ApiDoc, Route("core/v1/[controller]/[action]/")]
public class ApiController
{
...
}
Action上添加:
/// <summary>
/// 获取产品方法2
/// </summary>
/// <param name="input">输入参数</param>
/// <returns>输出参数</returns>
[ApiDoc, HttpPost]
public ProductInput GetProduct2([FromBody] ProductInput input)
{
return new ProductInput {ProductName = "一体机"};
}
在controller上添加ApiDoc特性后,可以在该控制器下的action上再添加ApiDoc(false)来停止某个单独方法的文档生成
NO.4
给API的项目和所有其依赖的项目的.csproj文件中的Project节点下都加上生成XML的配置,如下:
<PropertyGroup>
<TargetFramework>netcoreapp2.0</TargetFramework>
<DocumentationFile>bin\Debug\netcoreapp2.0\{项目名}.xml</DocumentationFile>
<DocumentationFile>bin\Release\netcoreapp2.0\{项目名}.xml</DocumentationFile>
<NoWarn>1701;1702;1705;1591</NoWarn>
</PropertyGroup>
NO.5
通过游览器打开
http://localhost:5000/core/v1/api.do来访问API文档
完整实例:
public class Startup
{
public Startup(IConfiguration configuration)
{
Configuration = configuration;
}
public IConfiguration Configuration { get; }
public void ConfigureServices(IServiceCollection services)
{
//加载日志记录组件
services.AddSingleton<IHttpContextAccessor, HttpContextAccessor>();
services.AddSingleton<ESClientProvider>();
//注册API文档服务
services.AddProtoMvc(op =>
{
op.IsOpenDoc = true; // 开放文档访问
op.ApiOptions = new ApiOptions
{
//API文档访问的路由; 推荐和API地址访问保持一致
Host = "/core/v1",
ApiName = "样例API文档",
APiVersion = "v1.0",
Copyright = "Copyright©2017-2018 api.com All Rights Reserved. ",
ProtoBufVersion = ProtoBufEnum.Proto3,
NetworkDocs = new List<NetworkDoc>
{
new NetworkDoc
{
Title = "默认网络文档一",
Url = "https://www.baidu.com/"
},
new NetworkDoc
{
Title = "我的博客",
Url = "http://www.cnblogs.com/likeli/"
},
}
};
//此处配置ES日志服务地址
//op.ESOptions = new ESOptions
//{
// Uri = "http://192.168.0.1:9200",
// DefaultIndex = "test-log",
//};
});
}
// This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
{
//启动ES日志服务
//loggerFactory
// .AddESLogger(app.ApplicationServices, "test-log", new FilterLoggerSettings
// {
// {"*", LogLevel.Trace},
// {"Microsoft", LogLevel.Warning},
// {"System", LogLevel.Warning},
// });
app.UseStatusCodePages()
.UseApi(); //启用API文档生成
}
}
其他工具
在tool目录下提供了批量下载proto文件的工具apiprotoasnic.go,基于go编写,源代码很简单,就是解析json,这里不再单独的提供说明文档。
约定
- 所有API的方法传入参数必须从Body中读取
版权
本项目采用 MIT 开源授权许可证
【开源】AspnetCore 2.0 自动API文档生成组件,支持protobuffer的更多相关文章
- .NET平台开源项目速览(4).NET文档生成工具ADB及使用
很久以前就使用ADB这个工具来生成项目的帮助文档.功能强大,在学习一些开源项目的过程中,官方没有提供CHM帮助文档,所以为了快速的了解项目结构和注释.就生成文档来自己看,非常好用.这也是一个学习方法吧 ...
- Java 的 Api 文档生成工具 JApiDocs 程序文档工具
JApiDocs 详细介绍 简介 JApiDocs 是一个符合 Java 编程习惯的 Api 文档生成工具.最大程度地利用 Java 的语法特性,你只管用心设计好接口,添加必要的注释,JApiDocs ...
- [aspnetcore.apidoc]一款很不错的api文档生成工具
AspNetCore.ApiDoc 简单徐速一下为什么选用了aspnetcore.apidoc 而没有选用swagger 最初我们也有在试用swagger,但总是有些感觉,感觉有点不满意,就但从api ...
- ASP.NET CORE 1.0 MVC API 文档用 SWASHBUCKLE SWAGGER实现
from:https://damienbod.com/2015/12/13/asp-net-5-mvc-6-api-documentation-using-swagger/ 代码生成工具: https ...
- 再见丑陋的 SwaggerUI,这款开源的API文档生成神器界面更炫酷,逼格更高!
一般在使用 Spring Boot 开发前后端分离项目的时候,都会用到 Swagger.Swagger 是一个规范和完整的框架,用于生成.描述.调试和可视化 RESTful 风格的 Web API 服 ...
- 推荐开源Api文档生成工具——Doxygen
http://www.stack.nl/~dimitri/doxygen/index.html 非常的方便. 2步生成API文档. 具体信息见官网哟!
- 【转载】Java Restful API 文档生成工具 smart-doc
谁说生成api文档就必须要定义注解? 谁说生成接口请求和返回示例必须要在线? 用代码去探路,不断尝试更多文档交付的可能性. 如果代码有生命,为什么不换种方式和它对话! 一.背景 没有背景.就自己做自己 ...
- Node与apidoc的邂逅——NodeJS Restful 的API文档生成
作为后台根据需求文档开发完成接口后,交付给前台(angular vue等)做开发,不可能让前台每个接口调用都去查看你的后台代码一点点查找.前台开发若不懂你的代码呢?让他一个接口一个接口去问你怎么调用, ...
- Api文档生成工具与Api文档的传播(pdf)
点击查看apidoc生成文档demo 1 环境和工具 win10 apidoc:注释生成api文档 wkhtmltopdf:apidoc生成的是html,不适合传播,于是通过wkhtmltopdf将h ...
随机推荐
- wkwebview加载本地html的要点
项目中有些页面,我采用了html页面开发,然后用wkwebview加载的设计.在加载过程中遇见了一些问题,在这里进行一些记载和讨论.如有不同意见欢迎进行评论沟通. 问题时候这样的: 在webview的 ...
- 用python 抓取B站视频评论,制作词云
python 作为爬虫利器,与其有很多强大的第三方库是分不开的,今天说的爬取B站的视频评论,其实重点在分析得到的评论化作嵌套的字典,在其中取出想要的内容.层层嵌套,眼花缭乱,分析时应细致!步骤分为以下 ...
- python中的“.T”操作
其实就是对一个矩阵的转置 看代码: a array([[1, 2, 3], [4, 5, 6], [7, 8, 9]]) a.T array([[1, 4, 7], [2, 5, 8], [3, 6, ...
- Scala入门系列(九):函数式编程
引言 Scala是一门既面向对象,又面向过程的语言,Scala的函数式编程,就是Scala面向过程最好的佐证.也真是因此让Scala具备了Java所不具备的更强大的功能和特性. 而之所以Scala一直 ...
- tolua++实现lua层调用c++技术分析
tolua++技术分析 cocos2dx+lua 前言 一直都使用 cocos2dx + lua 进行游戏开发,用 Lua 开发可以专注于游戏逻辑的实现,另外一方面可以实现热更新:而且 lua 是一个 ...
- HTML5经常使用知识
今日做项目.涉及到native和H5页面的交互 1.document.readyState document.readyState:推断文档是否载入完毕. firefox不支持. 这个属性是仅仅读的, ...
- 谈谈单元測试之(二):測试工具 JUnit 3
前言 上一篇文章<为什么要进行烦人的单元測试?>讨论了一下现阶段软件开发中,程序猿们測试情况的现状.这篇文章中,我打算介绍一下单元測试的工具(插件).而且推荐大家以后在开发中,真正的用上单 ...
- Hive修改行级别数据
我们知道Hive0.14版本之前是不支持行级别的插入,更新,删除的,0.14版本之后可以通过修改相关配置得以支持,但是在不修改默认配置的情况下是不是完全没有办法呢?不是的,这里有个比较简单的方法,前提 ...
- 浅谈MySQL中的查询优化
mysql的性能优化包罗甚广: 索引优化,查询优化,查询缓存,服务器设置优化,操作系统和硬件优化,应用层面优化(web服务器,缓存)等等.这里的记录的优化技巧更适用于开发人员,都是从网络上收集和自己整 ...
- 五、Spring Boot 事务
spring Boot 使用事务非常简单,首先使用注解 @EnableTransactionManagement 开启事务支持后,然后在访问数据库的Service方法上添加注解 @Transactio ...