[aspnetcore.apidoc]一款很不错的api文档生成工具

AspNetCore.ApiDoc

1106982-20190121002440693-1839534923.png

简单徐速一下为什么选用了aspnetcore.apidoc 而没有选用swagger

最初我们也有在试用swagger,但总是有些感觉,感觉有点不满意,就但从api文档角度来说,从前后端文档沟通角度来讲
apidoc的表现形式,要比swagger简单的多,效果也要好很多。

不要和我说什么swagger现在已经是一个标准了,其实swagger的坑很多,就单说枚举类型抓取上,就显示的很无奈,下面我会创建项目,写一个接口,拿这个接口举例,同时用apidoc和swagger展示其文档效果,对比一下孰优孰劣。

当然我这里并没有引战的意识,大家选用swagger,也是很不错的选择,博客园很多大佬,就swagger做了修改,以致于更加符合自己的需要,比如说有人给swagger加了生成pdf,word的功能,有人对swagger的权限控制做了管理,swagger有很大的人群在使用。

不过说到最后,我还是觉得apidoc 更符合国人的胃口。

初步快速搭建起项目

配置apidoc

  1. cli安装apidoc或通过nuget包管理器安装apidoc

dotnet add package AspNetCore.ApiDoc --version 2.2.0.3

1106982-20190120235245338-257278812.png

  1. 配置ConfigureServices
public void ConfigureServices(IServiceCollection services)
        {
            services.AddApiDoc(t =>
            {
                t.ApiDocPath = "apidoc";//api访问路径
                t.Title = "爆点";//文档名称
            });
            ...
        }

1106982-20190120235420748-1247815634.png

  1. 配置完毕,就是这么easy

配置swagger

  1. 通过cli安装或通过nuget包管理器安装swagger

1106982-20190120235650966-2124975482.png

  1. 配置ConfigureServices
public void ConfigureServices(IServiceCollection services)
        {
            services.AddSwaggerGen(c =>
            {
                c.SwaggerDoc("v1", new Info
                {
                    Title = "爆点API接口文档",
                    Version = "v1",
                    Contact = new Contact
                    {
                        Name = "鸟窝",
                        Email = "topbrids@gmail.com",
                        Url = "http://www.cnblogs.com/gdsblog"
                    }
                });
                c.IncludeXmlComments(XmlCommentsFilePath);
                c.IncludeXmlComments(XmlDomianCommentsFilePath);
            });
            ...
        }

1106982-20190120235823168-1624367641.png

  1. configure 里use一下

1106982-20190121000018896-595498586.png

public void Configure(IApplicationBuilder app, IHostingEnvironment env)
        {
            app.UseSwagger();
            app.UseSwaggerUI(c =>
            {
                c.SwaggerEndpoint("/swagger/v1/swagger.json", "爆点");
            });

            ...
        }
  1. ok swagger 配置完毕

提需求,描述接口业务

  1. 写一个获取广告图的接口

  2. 输入不同的入参可以获取不同位置的广告图

  3. get/post请求

  4. 接口响应体,是一个list,可能有一条广告,也可能有多条广告

具体撸码实现该接口

  1. 接口展示
/// <summary>
        /// 获取广告/banner/公告
        /// </summary>
        /// <param name="type"></param>
        /// <returns>
        /// <see cref="AdvertisingModel" langword="true"/>
        /// </returns>
        [HttpGet]
        [AllowAnonymous]
        public ResponsResult GetAd(AdLocation type)
        {
            return RpwService.GetAds(type);

        }

1106982-20190121000735254-442105239.png

  1. 该接口名称为GetAd,请求方式为get,AdvertisingModel 是一个接口返回的关键数据对象模型,接口入参是一个枚举
    ResponsResult是一个接口统一返回模型,下面具体展示器内容,[AllowAnonymous] 表示接口可以匿名访问,无需验证

  2. AdvertisingModel 内容

public class AdvertisingModel
    {
        /// <summary>
        /// 唯一id
        /// </summary>
        public string Id { get; set; }
        /// <summary>
        /// 标题
        /// </summary>
        public string AdName { get; set; }
        /// <summary>
        /// 开始时间
        /// </summary>
        public DateTime? BeginTime { get; set; }
        /// <summary>
        /// 结束时间
        /// </summary>
        public DateTime? EndTime { get; set; }
        /// <summary>
        /// 图片s
        /// </summary>
        public string AdPic { get; set; }
        /// <summary>
        /// 描述
        /// </summary>
        public string AdDesc { get; set; }

        /// <summary>
        /// 类型
        /// </summary>
        public AdLocation AdLocation { get; set; }
    }
  1. AdLocation 内容
public enum AdLocation
    {
        /// <summary>
        /// 首页
        /// </summary>
        [Description("首页")]
        Home = 1,
        /// <summary>
        /// 支付成功
        /// </summary>
        [Description("支付成功")]
        PaySuccessful,
        /// <summary>
        /// 登录页
        /// </summary>
        [Description("登录页")]
        Login,
        /// <summary>
        /// 公告
        /// </summary>
        [Description("公告")]
        GongGao,
        /// <summary>
        /// 启动页广告
        /// </summary>
        [Description("启动页")]
        SplashPage,
        /// <summary>
        /// banner广告
        /// </summary>
        [Description("banner广告")]
        Banner

    }

接下来对比一下apidoc和swagger的展示效果

apidoc

1106982-20190121001952396-1495133213.png

1106982-20190121002021444-1266677247.png

1106982-20190121002042255-1248547055.png

1106982-20190121002107824-1204737978.png

1106982-20190121002126213-685224728.png

swagger

1106982-20190121002150490-1459941054.png

1106982-20190121002213059-1609069351.png

1106982-20190121002228087-150033517.png

1106982-20190121002243519-2051447682.png

结论

大家只要仔细对比,同样的代码,apidoc和swagger对比的效果,宛如天堂和地狱,欢迎大家在项目中试用!

github 统一开源地址

转载于:https://www.cnblogs.com/gdsblog/p/10296815.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
asp.net 代码生成器 【基本说明】 1、能够生成三层模式操作的所有后台代码,简单的SQL Server 2005数据库操作。 2、生成的代码包括了 MODEL、BLL、DAL、DBHelper、Config 生成的代码内有详细注释可提供参考。 3、提供数据库增、删、改、查、分页及其事务,并提供多种重载方式。 4、所有数据表必须有主键且主键是第一列,这个主要是为了保证获取记录和分页获取的统一性,其实可以取消这个规则。 5、建议新建App_Code文件夹将生成的C#代码放里面。见此文件夹直接拷贝到项目下既可以使用。 6、不保证所提供软件或程序的完整性和安全性。 7、请在使用前查毒 (这也是您使用其它网络资源所必须注意的) 。 8、《Coder.NET代码生成器》需要.Net FrameWork2.0运行环境,基于SQL Server 2005使用。 9、如无法运行本软件,请下载并安装由微软公司提供的.Net FrameWork2.0系统. 10、如果您在使用过程中遇到程序问题或建议请于我联系我的Email是 mailto:liangasp[email protected]。 11、如需要源码与我联系 李亮 QQ:542529107 或登陆 http://liliang119007.download.csdn.net/下载更新版本。 【生成单表代码】 输入数据库名(Server)登录名(Name)密码(Pwd),连接后选择库名(Database)表名(Tables), 之后单击'生成单表代码'新建App_Code文件夹将生成的C#代码(ASP.NET后台代码)放里面。 【生成三层工厂模式项目】 (1)B/S架构(ASP·NET): 输入数据库名(Server)登录名(Name)密码(Pwd)连接数据库成功后直接点生成整个项目选择路径确定就好了。 (2)C/S架构(Windows应用程序): 输入数据库名(Server)登录名(Name)密码(Pwd)连接数据库成功后直接点生成整个项目选择路径确定, 生成项目后打开该项目解决方案将表示层删掉, 再单击vs的(文件→添加→新建项目→选择Windows应用程序),这样就生成C/S架构的程序了! 程序员:李亮 更新日期:2010-5-17

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值