当前位置:网站首页 > R语言数据分析 > 正文

swagger文档地址(swagger 文档)



开发 web api 的时候,写文档是个痛苦的事情,而没有文档别人就不知道怎么调用,所以又不得不写。

swagger 可以自动生成接口文档,并测试接口,极大的解放了程序员的生产力。

1 安装

通过 NuGet 安装 Swashbuckle。

安装完成后,App_Start 文件夹下会多出一个 SwaggerConfig.cs 文件。

重新生成并发布 api,打开网页 host)

网页显示如下:

2 修改名称和版本号

上图中框出的名称和版本号是可以修改的,打开 SwaggerConfig.cs 文件,找到如下代码:

修改其中的参数,重新发布即可。

3 显示说明

swagger 可以读取代码中的注释,并显示在网页上。如此一来,我们只需要在代码中将注释写好,就可以生成一份可供他人阅读的 API 文档了。

swagger 是通过编译时生成的 xml 文件来读取注释的。这个 xml 文件默认是不生成的,所以先要修改配置。

第一步: 右键项目 -> 属性 -> 生成,把 XML 文档文件勾上。

第二步: 添加配置 在 SwaggerConfig.cs 文件中添加配置如下:

注意:发布的时候,XML 文件不会一起发布,需要手动拷到发布目录下。

4 显示控制器注释及汉化

默认是不会显示控制器注释的,需要自己写。 在 App_Start 中新建类 ,代码如下:

另外,新建 swagger.js 文件并将其设置成 嵌入的资源,这个文件的作用就是显示控制器注释及汉化。js 代码如下:

在 SwaggerConfig.cs 添加如下配置:

5 路由相同,查询参数不同的方法

在实际的 ASP.NET Web API 中,是可以存在 路由相同HTTP 方法相同查询参数不同 的方法的,但不好意思,swagger 中不支持,并且会直接报错。

如下代码,

报错: Multiple operations with path 'api/users' and method 'GET'.

可以在 SwaggerConfig.cs 添加如下配置:

此配置的意思是,当遇到此种情况时,取第一个方法展示。

这可以避免报错,但多个方法只会在 swagger 中展示一个。治标不治本,不推荐。所以唯一的解决方案就是设置成不同的路由。不知道这个问题在之后的版本中会不会修复。

6 忽略 Model 中的某些字段

如下图,新建用户时,后台需要一个 User 类作为参数。点击右侧的 ,可以显示 User 类的属性及注释。

但是,有些字段其实是无需调用者传递的。例如 ,调用者无需知道这些字段的存在。

给这些属性标记上 特性,swagger 中不再显示了。

当然这种做法也是有缺点的,因为 web api 在返回数据时,调用的默认序列化方法也是 Newtonsoft.Json 序列化。

7 传递 header

调用 api 时,有些信息是放在 HTTP Header 中的,例如 。这个 swagger 也是支持的。

新建一个特性:

新建一个类代码如下:

这段代码就是告诉 swagger,如果遇到的方法上标记了 特性,则添加一个名为 的参数在 中。

最后需要在 SwaggerConfig.cs 中注册这个过滤器。

效果如下:

8 出错时的 HTTP 状态码

我们在方法中返回一个 400

可是,swagger 中返回的状态码却是 0。

这是因为 指定了 JSON 格式,但传入的 又不是 JSON 格式的。

将 改为 JSON 格式,或者将 改成 就可以了。

到此这篇swagger文档地址(swagger 文档)的文章就介绍到这了,更多相关内容请继续浏览下面的相关推荐文章,希望大家都能在编程的领域有一番成就!

版权声明


相关文章:

  • yarn logs -applicationid命令(yarn application status)2025-08-01 21:27:10
  • aurochs(aurochs怎么读)2025-08-01 21:27:10
  • swagger2配置登录(swagger2 ui)2025-08-01 21:27:10
  • gridview自适应宽度(grid布局自适应)2025-08-01 21:27:10
  • impdp 字符集(oracle imp字符集不一致)2025-08-01 21:27:10
  • argparser怎么下载(安装argparse)2025-08-01 21:27:10
  • 数组方法every(数组方法filter)2025-08-01 21:27:10
  • 数组方法filter返回值(数组的filter方法会改变原数组吗)2025-08-01 21:27:10
  • zipentry(zipentry转file)2025-08-01 21:27:10
  • redis连接数配置(redis 连接数)2025-08-01 21:27:10
  • 全屏图片