当前位置: 首页 > news >正文

苍穹外卖(四):swagger导入接口文档

1.导入接口文档

接下来,就要进入到项目的业务开发了,而我们的开发方式就是基本当前企业主流的前后端分离开发方式,那么这种方式就要求我们之前需要先将接口定义好,这样前后端人员才能并行开发,所以,这个章节就需要将接口文档导入到管理平台,为我们后面业务开发做好准备。其实,在真实的企业开发中,接口设计过程其实是一个非常漫长的过程,可能需要多次开会讨论调整,甚至在开发的过程中才会发现某些接口定义还需要再调整,这种情况其实是非常常见的,但是由于项目时间原因,所以选择一次性导入所有的接口,在开发业务功能过程当中,也会带着大家一起来分析一下对应的接口是怎么确定下来的,为什么要这样定义,从而培养同学们的接口设计能力。

1.1 前后端分离开发流程

第一步:定义接口,确定接口的路径、请求方式、传入参数、返回参数。

第二步:前端开发人员和后端开发人员并行开发,同时,也可自测。

第三步:前后端人员进行连调测试。

第四步:提交给测试人员进行最终测试。

1.2 操作步骤

将课程资料中提供的项目接口导入YApi。访问地址:http://yapi.smart-xwork.cn/

1.2.1从资料中找到项目接口文件

 

1.2.2导入到Apifox平台

在Apifox平台创建项目

将项目接口文件导入

2.Swagger

2.1 介绍

Swagger 是一个规范和完整的框架,用于生成、描述、调用和可视化 RESTful 风格的 Web 服务(API Documentation & Design Tools for Teams | Swagger)。 它的主要作用是:

  1. 使得前后端分离开发更加方便,有利于团队协作

  2. 接口的文档在线自动生成,降低后端开发人员编写接口文档的负担

  3. 功能测试

    Spring已经将Swagger纳入自身的标准,建立了Spring-swagger项目,现在叫Springfox。通过在项目中引入Springfox ,即可非常简单快捷的使用Swagger。

2.2 配置Swagger

2.2.1 添加依赖

<!--swagger-->
<dependency><groupId>io.springfox</groupId><artifactId>springfox-swagger2</artifactId><version>2.7.0</version>
</dependency>
<dependency><groupId>io.springfox</groupId><artifactId>springfox-swagger-ui</artifactId><version>2.7.0</version>
</dependency>

2.2.2 创建Swagger2配置文件

代码如下(示例):

@Configuration
@EnableSwagger2
public class Swagger2Config {@Beanpublic Docket apiConfig() {return new Docket(DocumentationType.SWAGGER_2)// 调用apiInfo方法,创建一个ApiInfo实例,里面是展示在文档页面信息内容.apiInfo(apiInfo());}private ApiInfo apiInfo() {return new ApiInfoBuilder()//大标题.title("接口文档")//详细描述.description("接口文档")//版本.version("1.0")//作者.contact(new Contact("xiliu", "http://www.xxx.com", "277769738@qq.com")).build();}}

2.2.3 重启服务查看接口

访问路径:http://localhost:8081/swagger-ui.html ,出现生成的文档页面。

2.3Knife4j

knife4j是为Java MVC框架集成Swagger生成Api文档的增强解决方案,前身是swagger-bootstrap-ui,取名kni4j是希望它能像一把匕首一样小巧,轻量,并且功能强悍!目前,一般都使用knife4j框架。

2.3.1 使用步骤

(1)导入 knife4j 的maven坐标

在pom.xml中添加依赖

<dependency><groupId>com.github.xiaoymin</groupId><artifactId>knife4j-spring-boot-starter</artifactId>
</dependency>

(2)在配置类中加入 knife4j 相关配置

WebMvcConfiguration.java

/*** 通过knife4j生成接口文档* @return
*/@Beanpublic Docket docket() {ApiInfo apiInfo = new ApiInfoBuilder().title("苍穹外卖项目接口文档").version("2.0").description("苍穹外卖项目接口文档").build();Docket docket = new Docket(DocumentationType.SWAGGER_2).apiInfo(apiInfo).select().apis(RequestHandlerSelectors.basePackage("com.sky.controller")).paths(PathSelectors.any()).build();return docket;}

 (3)设置静态资源映射,否则接口文档页面无法访问

WebMvcConfiguration.java

/*** 设置静态资源映射* @param registry
*/
protected void addResourceHandlers(ResourceHandlerRegistry registry) {registry.addResourceHandler("/doc.html").addResourceLocations("classpath:/META-INF/resources/");registry.addResourceHandler("/webjars/**").addResourceLocations("classpath:/META-INF/resources/webjars/");
}

(4)访问测试

接口文档访问路径为 http://ip:port/doc.html ---> http://localhost:8080/doc.html

(5)接口测试:测试登录功能

思考:通过 Swagger 就可以生成接口文档,那么我们就不需要 Yapi 了?

1、Yapi 是设计阶段使用的工具,管理和维护接口

2、Swagger 在开发阶段使用的框架,帮助后端开发人员做后端的接口测试

2.3.2 常用注解

通过注解可以控制生成的接口文档,使接口文档拥有更好的可读性,常用注解如下:

注解说明
@Api用在类上,例如Controller,表示对类的说明
@ApiModel用在类上,例如entity、DTO、VO
@ApiModelProperty用在属性上,描述属性信息
@ApiOperation用在方法上,例如Controller的方法,说明方法的用途、作用

 项目地址:sky-take-out: springboot+redis+mybatisplus苍穹外卖项目 (gitee.com)

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 《Advanced RAG》-12-增进RAG的全局理解(二)
  • Golang 中的 XML 魔法:encoding/xml 包的精妙运用
  • 『大模型笔记』基于LLM生成真实世界数据的合成问答数据!
  • Apache,Tomcat,Nginx有什么关系?
  • 《SQL 中计算地理坐标两点间距离的魔法》
  • 目录与文件相关的命令
  • Spring Boot全局异常
  • SQL server 同环比计算模板
  • HDU动态规划——1114.Piggy-Bank,1121.Complete the Sequence,1158.Employment Planning
  • 音视频开发继续学习
  • 【Python】线性规划模型(笔记)
  • 编译aws并访问minio
  • Spring boot 使用 jSerialComm 对串口使用发送信息并接收
  • 【香菇带你学Mysql】Linux下Mysql8使用二进制安装包安装教程【建议收藏】
  • 案例分享—国外深色UI界面设计赏析
  • 【跃迁之路】【699天】程序员高效学习方法论探索系列(实验阶段456-2019.1.19)...
  • 2017 前端面试准备 - 收藏集 - 掘金
  • es6要点
  • Laravel 菜鸟晋级之路
  • MyEclipse 8.0 GA 搭建 Struts2 + Spring2 + Hibernate3 (测试)
  • mysql 数据库四种事务隔离级别
  • Odoo domain写法及运用
  • Vue2.0 实现互斥
  • vue脚手架vue-cli
  • 服务器从安装到部署全过程(二)
  • 后端_MYSQL
  • 精彩代码 vue.js
  • 精益 React 学习指南 (Lean React)- 1.5 React 与 DOM
  • 开发了一款写作软件(OSX,Windows),附带Electron开发指南
  • 浏览器缓存机制分析
  • 使用Swoole加速Laravel(正式环境中)
  • 使用阿里云发布分布式网站,开发时候应该注意什么?
  • 双管齐下,VMware的容器新战略
  • 算法之不定期更新(一)(2018-04-12)
  • 通过npm或yarn自动生成vue组件
  • 我看到的前端
  • 一些css基础学习笔记
  • 用jquery写贪吃蛇
  • 最近的计划
  • 如何正确理解,内页权重高于首页?
  • ​​​​​​​ubuntu16.04 fastreid训练过程
  • ​数据结构之初始二叉树(3)
  • ###51单片机学习(2)-----如何通过C语言运用延时函数设计LED流水灯
  • #HarmonyOS:软件安装window和mac预览Hello World
  • #基础#使用Jupyter进行Notebook的转换 .ipynb文件导出为.md文件
  • $.ajax()
  • (3)(3.2) MAVLink2数据包签名(安全)
  • (iPhone/iPad开发)在UIWebView中自定义菜单栏
  • (NO.00004)iOS实现打砖块游戏(十二):伸缩自如,我是如意金箍棒(上)!
  • (附源码)springboot车辆管理系统 毕业设计 031034
  • (机器学习-深度学习快速入门)第一章第一节:Python环境和数据分析
  • (三十五)大数据实战——Superset可视化平台搭建
  • (转)ORM
  • (转载)VS2010/MFC编程入门之三十四(菜单:VS2010菜单资源详解)
  • (自用)网络编程