【开源】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 ...
随机推荐
- C++课程设计2
PS:大一下学期C++课程设计 1.成绩管理系统 #include<stdio.h> #include<string> #include<iostream> #in ...
- 微信JS-SDK选择相册或拍照并上传PHP实现
理解:微信上传接口是拍照,或者选择本地照片,上传到微信的服务器,获取到一个id,通过token与这个id获取到图片,保存到服务器即可. 效果 通过微信js接口,调用底层程序. 需要引入js文件,并进行 ...
- 数据库索引------B-Tree 索引和 Hash 索引的对比
对于 B-tree 和 hash 数据结构的理解能够有助于预测不同存储引擎下使用不同索引的查询性能的差异,尤其是那些允许你选择 B-tree 或者 hash 索引的内存存储引擎. B-Tree 索引的 ...
- 【WF2017】Mission Improbable
http://www.lydsy.com/JudgeOnline/problem.php?id=4950 对于俯视图很好解决,把所有不是0的位置拿到剩1就可以了. 对于正视图与侧视图,稍微想一下也能发 ...
- Java开发小技巧(二):自定义Maven依赖
前言 我们在项目开发中经常会将一些通用的类.方法等内容进行打包,打造成我们自己的开发工具包,作为各个项目的依赖来使用. 一般的做法是将项目导出成Jar包,然后在其它项目中将其导入,看起来很轻松,但是存 ...
- 让Android Support V4中的SwipeRefreshLayout支持上拉载入很多其它
前言 原来的Android SDK中并没有下拉刷新组件,可是这个组件确实绝大多数APP必备的一个部件.好在google在v4包中出了一个SwipeRefreshLayout.可是这个组件仅仅支持下拉刷 ...
- Java -Xms -Xmx -Xss -XX:MaxNewSize -XX:MaxPermSize含义记录
出现java.lang.OutOfMemoryError异常时,常使用的方法便是将例如以下配置语句: -Xms512m -Xmx512m -Xss1024k -XX:MaxNewSize=256M - ...
- 【打CF,学算法——三星级】Codeforces Round #313 (Div. 2) C. Gerald's Hexagon
[CF简单介绍] 提交链接:http://codeforces.com/contest/560/problem/C 题面: C. Gerald's Hexagon time limit per tes ...
- js原生的轮播,原理以及实践
轮播,无论是文字轮播还是图片轮播,他们的原理是一样的,都是通过定时器执行循环展示和影藏. 一.手动轮播 (1)原理 一系列的大小相等的图片平铺,利用CSS布局只显示一张图片,其余隐藏.通过计算偏移量利 ...
- mssql查询过去一段时间数据库中执行过的语句及执行效率
SELECT TOP 1000 ST.text AS '执行的SQL语句', QS.execution_count AS '执行次数', QS.total_elapsed_time AS '耗时', ...