使用Swagger作API接口对接

1、当前项目中存在的问题

  在前后端分离的项目中,如手机端与接口端对接、WEB项目调用API,进行接口对接的方式一般是先创建WORD文档,然后把各个接口的链接、参数、访问方式、说明等信息粘贴进去。在制作文档的过程中,如果稍有不注意就容易出现文档错误,影响对接接口的准确性。

  如果接口开发中出现新的需求,导致接口的传入参数、传出参数、链接地址发生改变,则需要同步更新对接文档,并将文件发送给对接的同事。此种对接方式给后端开发的同事增加了较多的工作量,且制作方式非常不灵活,导致对接效率低下

  后端程序员开发好接口以后,需要自己手动编写测试程序,给开发工作带来了额外的工作量。

 

2、Swagger解决的问题

  Swagger是一个自动生成接口文档的工具的,它生成的内容包含接口地址、接口说明、传入参数说明、传入参数示例、传出参数说明、传出参数示例等。它生成文档的依据是代码与备注,如果它生成的文档出错,那么必然是代码写错了,所以根本不用担心文档会出问题。

  在接口需求变化时,只要把修改后的代码重新生成一下,就可以直接向前端同事展现最新的文档,绝不会出错。与前端同事对接时,只要用口头或通信工具通知对方哪个接口发生了变化即可,不用再手动写文档。
  同时,Swagger还提供了接口访问功能,在接口生成完成后,可以直接在Swaager界面传入参数进行调试,无需再像之前那样写代码调用接口。

 

3、Swagger使用方法

3.1、如何引入项目

  Swagger可用于ASP.NET的MVC、WEBAPI项目,接口生成对象为各个继承ApiController的控制器,控制器里所有的公用方法都会生成对应的文档。配置方案如下 :

  第一步:打开项目,选择工具----Nuget程序包管理器----管理解决方案的Nuget程序包,打开Nuget程序包管理器

 

 

  第二步:在Nuget程序包管理器中选择联机----nuget.org,在右侧的搜索框中输入“Swagger”,然后在搜索结果中点击Swashbuckle行的“安装”按钮。

  备注:下面的Swagger行也可以使用,但是对于.NET FRAMEWORK版本要求较高,建议在4.5及以上版本中使用

 

  第三步:在弹出的安装确认程序中,选择MVC或WEBAPI项目即可,其他项目不要勾选。如果有多个MVC或WEBAPI,可以一起勾选。点击“OK”后安装继续,等待完成即可

 

 

3.2 、相关配置

3.2.1、接口路径配置

  API控制器默认只能访问一个GET接口,我们需要把它配置为可以访问所有接口。打开App_Start\WebApiConfig.cs文件,可以看到routeTemplate的值如下:

api/{controller}/{id}

将它改为“api/{controller}/{action}/{id}”即可

 

3.2.2、各项目配置

  我们的传入传出参数如果放在独立的类库中,则应该首先对类库进行下图中的配置。图中配置的意思是如果使用到Entity项目里面的类,则使用SwaggerTest.Entity.XML文件的备注进行生成。

  需要作此项配置的项目有控制器所在项目、传入传出参数类所在项目,在此DEMO中,参数类放在SwaggerTest.Entity项目中,控制器在SwaggerTest项目中,两个都需要配置。

 

3.2.3、代码配置

  打开接口项目的App_Start\SwaggerConfig.cs文件,在EnableSwagger方法中加入以下三行代码:

c.IncludeXmlComments(string.Format("{0}bin\\SwaggerTest.Entity.XML", System.AppDomain.CurrentDomain.BaseDirectory));//启用传入传出参数所在的类库,注意路径与3.2.3的类库文档文件保持一致

c.IncludeXmlComments(string.Format("{0}bin\\SwaggerTest.XML", System.AppDomain.CurrentDomain.BaseDirectory));//启用控制器所在项目,注意路径与3.2.3中的控制器项目文档文件保持一致

c.ResolveConflictingActions(apiDescriptions => apiDescriptions.First());//如果一个方法或一个参数有多个备注,则启用第一个。此项如果不配置,有多个备注时会报异常

 

2、接口开发要求

2.1、传入参数定义

   传入参数遵照C#的备注风格,按照下面的写法即可

    /// <summary>
    /// 请求参数

    ///  只能生成一行,此行不会生成到文档里面
    /// </summary>
    public class ReqeustAEntity
    {
        /// <summary>
        /// 整型参数1
        /// </summary>
        public int Param1 { get; set; }

        /// <summary>
        /// 字符串参数2
        /// </summary>
        public string Param2 { get; set; }
    }

 

2.2、传出参数定义

   传出参数同传入参数,使用C#风格的备注,按照下图红框中的写法即可

    /// <summary>
    /// 方法A返回实体
    /// </summary>
    public class ResponseAEntity
    {
        /// <summary>
        /// A接口返回参数1
        /// </summary>
        public string ResAP1 { get; set; }

        /// <summary>
        /// A接口返回参数2
        /// </summary>
        public string ResAP2 { get; set; }
    }

 

2.3、接口编写定义

   接口备注方法同传入传出参数,在接口上方填写好备注即可。同时在接口上方标注HttpPost或HttGet,可以指定接口请求方法,如果没有标注请求方式,则默认为HttpPost。如果返回信息不是基本类型,注意不要转换为JSON后返回,否则接口文档中无法显示字段备注

        /// <summary>
        /// 方法A
        /// </summary>
        /// <param name="request">请求参数</param>
        /// <returns></returns>

        public ResponseAEntity MethodA(ReqeustAEntity request)
        {
            ResponseAEntity response = new ResponseAEntity()
            {
                ResAP1 = "A方法返回参数1",
                ResAP2 = "B方法返回参数2"
            };
            return response;            
        }

 

2.4、发布方法

   使用VISUAL STUDIO提供的发布方法将接口发布至测试站点以后,应注意将以下文件复制到测试站点的BIN目录下:

   SwaggerTest.XML:控制器所在项目生成的XML文件

   SwaggerTest.Entity.XML:传入传出参数类所在项目生成的XML文件

   备注:如果系统中有多个控制器项目,或有多个传入传出参数项目,需要把这些项目对应的XML文件都复制过去

 

2.5、文档访问方法

  打开接口站点地址,在后面加上/Swagger,即可看到文档。如当前网址为www.baidu.com,则文档地址为www.baidu.com/Swagger。打开地址以后,将自动跳转至文档地址www.baidu.com/swagger/docs/v1

 

2.6、界面说明

 

  结束,大家可以动手试试,这个东西在对接API时超好用。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/25200.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

API对接实战

目录 一 背景 二 了解B公司接口的基础约定 三 基础域名 四 请求及相应格式说明 五 确定要对接哪些API 六 根据API文档&#xff0c;编写一些基础工具类。 七 根据API文档&#xff0c;编写必要的DTO 八 针对每个API方法&#xff0c;进行对接 九 对接代码结构 十 一些对…

企业微信api对接

用的是wxJava&#xff0c;但是wxJava文档真滴不清楚&#xff0c;都是jar全局搜索url/看方法试的。 坑0&#xff1a; 通讯录不仅要开通api&#xff0c;还得开通是“可编辑”不然是“只读”&#xff08;然后还可以设置人员自己编辑后推动事件服务器&#xff09;挺不错的 坑一&a…

WebAPI接口对接

WebAPI接口对接&#xff1a; 提示&#xff1a;此片文章是总结接口对接经验其中包括模型的建立以及统一的调用 学习内容&#xff1a; 数据对象模型的建立如何规范定义模型统一的请求方法系统中model的命名 数据对象的建立 接口的数据传输对象包括Request对象和Response对象 …

百度翻译API对接

百度翻译开发平台&#xff1a;http://api.fanyi.baidu.com/api/trans/product/index 打开如上链接&#xff1a; 下载SDK 导入SDK 新建一个工程&#xff08;zyq-translate&#xff09;&#xff0c;并新建包&#xff08;com.zyq.translate&#xff09; 解压SDK&#xff0c;得…

对接海康ISC平台API

开发文档&#xff1a;海康开放平台。&#xff08;视频预览、抓图等能力&#xff09;

Unity Layer(图层)简介

图层基础 1. 当一个项目或者场景中包含很多对象时&#xff0c;通常难以组织。有的时候&#xff0c;希望一些游戏对象只能被某些摄像机看到或者只会被某些灯光照亮&#xff1b;有时&#xff0c;你可能希望只让某些类型的对象之间发生碰撞&#xff1b;在Unity中用图层处理上述需求…

【闲玩】看看ChatGpt认为的各级别Unity程序该掌握哪些技术

1.初级Unity开发 2.中级Unity开发 3.高级Unity开发 4.资深Unity开发 结语&#xff1a; 仅供娱乐哈&#xff0c;不过还是可以参考的。 不得不说。。。ChatGpt是真的强啊。。。

图形学之Unity渲染管线流程分析

文章来源&#xff1a; 学习通http://www.bdgxy.com/ 普学网http://www.boxinghulanban.cn/ 智学网http://www.jaxp.net/ 表格制作excel教程http://www.tpyjn.cn/ 学习通http://www.tsgmyy.cn/ 下图是《Unity Shader 入门精要》一书中的渲染流程图&#xff1b; ApplicationS…

Unity渲染工程收集

NPR 非真实渲染 UnityURP-AnimeStyleCelShader SSR 屏幕空间反射 UnitySSReflectionURP Skin 皮肤 Unity-URP-SkinSSSLUTGenerator

art-template渲染大坑,从后台接受到的数据正确,但渲染出来的都是空白

问题描述 后台使用的是art-template模板引擎和express // 部分代码如下 router.get(/advert/add, (req, res, next) > {res.render(advert_add.html); });前端使用的art-template 重点看下面画着的部分 // 代码如下 {{ extend ./layout.html }}{{ block style }} {{ /blo…

[Unity3D热更框架] LuaMVC简介

1.什么是LuaMVC 从工作以来一直从事工业三维仿真软件/AR软件的开发&#xff0c;每个项目开发周期短&#xff0c;项目从Demo到完(huang)结(le)时间较为紧凑&#xff0c;因此需要一个便捷的开发框架作为支撑&#xff0c;以适应不同的项目需求&#xff0c;而且需要尽可能覆盖多个终…

一张图了解OpenGL的渲染架构

初学者在初学OpenGL时&#xff0c;很多时候会对OpenGL的渲染架构感到困惑&#xff0c;不清楚它是怎么一个渲染流程&#xff0c;常将Arributes直接传递到片元着色器&#xff0c;或者为了将属性直接传递到片元着色器&#xff0c;而通过uniform传递到片元着色器等&#xff0c;这样…

GacUI:跨平台和渲染器

GacUI&#xff1a;跨平台和渲染器 https://github.com/vczh/GacUIBlog UI库跨平台的方法无非就是每个平台写一次。而如何把更多的共同点抽取出来&#xff0c;尽量的减少每个平台写一次的部分&#xff0c;是每一个跨平台的UI库的重点之一。GacUI的设计比较直接&#xff0c;所有…

Unity3D 《拥挤城市》3D房子建筑透视效果实

3D游戏&#xff0c;经常会看到透视效果&#xff0c;例如《王者荣耀》草丛透视&#xff0c;《拥挤城市》建筑透视。 实现原理&#xff1a;把3D模型MeshRenderer中Materials替换成透明材质球。 举例&#xff1a;《拥挤城市》3D房子建筑透视效果实现&#xff0c;效果如下图&…

Unity2020高清渲染管线

一、高清渲染管线加载与环境配置 这里使用2019.3.0f6版本 1、加载高清渲染管线&#xff08;High Definition RP&#xff09; 2、创建高清管线脚本文件 3、配置高清渲染管线环境&#xff08;把色彩空间改为线性空间&#xff09; 4、把高清渲染管线脚本添加到图形&#xff08;G…

Unity Xlua热更新框架(一):概述与效果演示

1. 资源目录划分 资源&#xff1a;热更新资源和热更新步骤&#xff08;Bundle&#xff09;&#xff0c;&#xff0c;&#xff0c;&#xff0c;资源需要打成Bundle包&#xff0c;通过不重新安装安装包的情况&#xff0c;去更新和替换资源代码&#xff1a;Lua与C&#xff03;的交…

Unity3D教程:实现房产项目中的材质动态切换

在许多典型的房产展示项目当中&#xff0c;经常需要动态地实现例如墙纸、地板等材质的更换以获得不同的展示效果&#xff0c;下面将通过一个简单的教程介绍实现这一功能的关键技术。 首先需要场景中创建一个简易的样品房&#xff0c;样品房里面有一个地面和两面相互垂直的墙壁…

【GAMES-104现代游戏引擎】4、引擎渲染基础(渲染基础数据、全局光照、PBR、阴影)

Lecture04~05 1、光栅化流程2、一丢丢显卡知识3、网格绘制组件&#xff08;Mesh Render Component&#xff09;4、材质5、资源池&#xff08;Resource Pool&#xff09;6、Cluster-Based Mesh Pipeline7、渲染 游戏渲染的挑战 一个场景包含成千上万的GO需要的材质、shader、效果…

重回游戏公平,向游戏打金工作室宣战!

什么是打金工作室&#xff1f; 近几年中国游戏市场持续发展&#xff0c;国产自研精品游戏层出不穷&#xff0c;游戏产业精品化、高质量健康发展趋势稳定。根据中国音数协游戏工委&#xff08;GPC&#xff09;与中国游戏产业研究院发布的《2022年中国游戏产业报告》显示&#xf…