# 使用Swashbuckle为Asp.net API生成文档

整理 By HeTJ@2020.11.11

序言

  • 开发REST API有一个重要的任务就是生成API的文档

  • 可以使用Swashbuckle、NSwag

工具

Visual Studio Community 2019

方法与步骤

  • 创建一个ASP.NET Web Application (.NET Framework 4.5)项目;

    (Web API)

  • 通过Nuget Package Manager Console添加API所需的引用;

    Install-Package Microsoft.AspNet.WebApi

    image-20201201103029138

    packages.config修改完成。

  • [Global.asax]增加一个全局引用类。

在 Application_Start 中加入:

GlobalConfiguration.Configuration.Routes.MapHttpRoute("Default", 

    "{controller}/{id}", 

    new { id = RouteParameter.Optional });

如下图

image-20201201103526960

  • 为项目增加一个文件夹Controllers(如果不存在),然后增加一个类VersionController, 写入以下代码:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Http;

namespace JwtWebApi.Controllers
{
    public class VersionController : ApiController
    {
        public IHttpActionResult Get() {
            return Ok("Web API V1.0");
        }
    }
}
  • 运行

image-20201201104748528

  • 通过Swashbuckle生成文档

    通过Nuget Package Manage Console安装Swashbuckle:

Install-Package Swashbuckle -Version 5.3.2

如图示

image-20201201105111803

安装完成

image-20201201105150202

注意:60304是随机端口,可通过查看项目属性(Alt+Enter)-Web找到。

image-20201201105514639

  • 再次运行,出现错误

    image-20201201110022665

    解决冲突办法: 第一步:找到SwaggerConfig.cs页面,引用:using System.Linq; 第二步:找到大概168行的代码,是注释状态,取消注释。再执行可以解决。

    c.ResolveConflictingActions(apiDescriptions => apiDescriptions.First());

  • 运行,输入地址:localhost:60304/swagger,回车

    image-20201201111428962

    查看api

    image-20201201111722195

    OK。点击Show/Hide

    image-20201201111935406

  • 测试/Acount/ValidLogin接口

    账号密码不一样(演示非法用户登录)

    image-20201201112238662

    账号密码一样(演示合法用户登录成功)

    image-20201201112546294

  • 完成。

See also:

ASP.NET Core web API documentation with Swagger / OpenAPI

Get started with Swashbuckle and ASP.NET Core

Copyright © 德和居 2021 粤ICP备20069867号 在CC-BY-NC-SA 4.0协议下授权使用,除非另有说明 all right reserved,powered by Gitbook本文修订时间: 2020-12-25 20:15:00

results matching ""

    No results matching ""

    results matching ""

      No results matching ""