百度360必应搜狗淘宝本站头条
当前位置:网站首页 > IT知识 > 正文

从零搭建后端框架:对方不想说话但扔了个swagger2

liuian 2025-02-26 12:45 10 浏览

现在大部分公司的软件架构都是微服务+前后端分离,说到前后端分离,不仅仅是因为技术架构的迭代更新导致的,主要还是因为产品经历了从无到有从增量到存量的时间,用户的需求已经从能用到好用。产品除了要快速迭代抢占市场外,还需要提高用户体验博取眼球。所以前后端的分离,也衍生除了前端工程师、后端工程师来共同完成一个功能的开发。

所以接下来要考虑的问题,如何制定前后端的接口规范,如何提供接口清单。前面的问题现在已经解决了,所以很多研发团队都是后端工程师写好接口文档后,自己先用postman测一下,然后写一份接口清单文档,发给前端,如果接口调整了,又要写一个文档。而且经常因为接口文档写的不好、给的太慢,被前端和TL怼。花少也被怼过几次,傲娇的花少闹起了小脾气,所以在工位上放了纸条“花少已死,有事扫支”,同时扔了个swagger2


花少揭秘四部曲:

1、添加Maven依赖

io.springfox

springfox-swagger2

2.9.2

io.springfox

springfox-swagger-ui

2.9.2

2、创建Swagger配置

创建Swagger配置

@Configuration

@EnableSwagger2

public class SwaggerConfig {

@Bean

public Docket docket() {

return new Docket(DocumentationType.SWAGGER_2)

.select()

// apis 指定生成API的扫描条件

.apis(RequestHandlerSelectors.withMethodAnnotation(ApiOperation.class))

// 扫描包

//.apis(RequestHandlerSelectors.basePackage("com.zhuqc.framework.controller"))

// paths 指定生成API的path

.paths(PathSelectors.any())

.build()

// 文档信息

.apiInfo(apiInfo());

}

private ApiInfo apiInfo() {

return new ApiInfoBuilder()

.title("花少教你从零搭建后端框架")

.description("API接口文档")

.termsOfServiceUrl("https://www.baidu.com/")

.contact(new Contact("花少", "", ""))

.version("0.0.1")

.build();

}

}

@EnableSwagger2 开启Swagger2

apis 用来指定扫描的条件

RequestHandlerSelectors.basePackage("com.zhuqc.framework.controller"),扫描指定包

RequestHandlerSelectors.withClassAnnotation((Api.class),扫描@Api标注的类

RequestHandlerSelectors.withMethodAnnotation(ApiOperation.class),扫描@ApiOperation标注的方法

RequestHandlerSelectors.any(),总是true

RequestHandlerSelectors.none(),总是false

默认配置是没有@ApiIgnore标注的类和方法

paths 用来指定生成API的path

PathSelectors.any(),总是true

PathSelectors.none(),总是false

PathSelectors.regex(),正则表达式匹配

PathSelectors.ant(),Ant表达式匹配

apiInfo 用来指定文档信息

3、Swagger使用

@Api(description = "花少向你扔了个Swagger2")

@RestController

public class HelloController {

@ApiOperation(value = "需求", notes = "花少的需求")

@ApiImplicitParams({

@ApiImplicitParam(name = "name", value = "需求", required = true)

})

@GetMapping("/hello/{name}")

public String hello(@PathVariable String name) {

return String.format("花少需要你们的 %s!", name);

}

}

常见注解

@Api 修饰整个类,描述整个Controller的作用

@ApiOperation 修饰方法,描述方法的作用

@ApiParam 修饰参数,描述参数的作用

@ApiIgnore 表示忽略当前API

@ApiImplicitParams 描述多个请求参数

@ApiImplicitParam 描述一个请求参数

@ApiModel 如果参数是对象,则在对象所在类上标注,用于描述对象

@ApiModelProperty 如果参数是对象,则在对象所在类的属性上标注,用于描述对象的属性

4、启动项目

准备工作已完成,启动项目后访问Swagger地址:http://localhost:8080/swagger-ui.html

测试效果如下:



到这里Swagger2已集成完毕,不过我们还是要养成在开发或修改完接口的同时,顺手修改下接口描述,否则咱们帅不过三秒瞬间打脸,只能宣告装死失败!

花有重开日,人无再少年 → 我是花少【少宫主花无缺】#更新不断,创作不易#走过路过不不白piao,留下关注和点赞(公众号同名)@all

相关推荐

x-cmd install | jellex - 用 Python 语法在终端里玩转 JSON 数据!

还在为命令行下处理JSON数据烦恼吗?jellex来了!它是一款基于终端的交互式JSON和JSONLines数据处理工具,让你用熟悉的Python语法,轻松过滤、转换和探索JSO...

一篇长文带你在Python里玩转Json数据

Json简介Json(JavaScriptObjectNotation)很多网站都会用到Json格式来进行数据的传输和交换,就像上篇我提到的网易云音乐接口,它们返回的数据都是Json格式的。这因为...

Python JSON 魔法手册:数据转换的终极艺术

对话实录小白:(崩溃)我从API拿到了JSON数据,怎么变成Python对象?专家:(掏出魔法书)用json模块,轻松实现数据转换!JSON基础三连击1.字符串Python对...

Python JSON 详解教程(python json())

JSON(JavaScriptObjectNotation)是一种轻量级的数据交换格式(lightweightdatainterchangeformat)常用于Web应用、配置文件(co...

Python 数据的 JSON 格式序列化及反序列化

在Python中,将数据转换为JSON格式非常简单,可以使用内置的json模块。json模块提供了json.dumps()和json.dump()方法,用于将Python对象...

如何使Python类可JSON序列化(python json 类)

技术背景在Python开发中,JSON(JavaScriptObjectNotation)是一种常用的数据交换格式。然而,Python的json模块默认只能序列化一些基本数据类型,如字典、列表、字...

详细介绍一下Python如何对JSON格式数据进行处理?

在Python中对于JSON数据的处理是在日常开发中的常见需求之一。通常情况下,对JSON数据的处理主要涉及到如下的的几个步骤对于JSON数据的解析操作对于JSON数据的处理操作对于JSON数据的格式...

Python 字典l转换成 JSON(python转化字典)

本文需要5分钟。如果对您有用可以点赞评论关注.Python字典到JSONJSON(JavaScriptObjectNotation)是一种轻量级的数据交换格式,它基于ECMAScrip...

打造熟悉的VS界面风格(vs界面设计美化)

用惯了老机子的VS界面,换新机子时,各种不适应。现在重新打造老款样式:1)下载VisualStudio2013ColorThemeEditorhttps://marketplace.vis...

办公小技巧:全部亮相 让Excel单元格完全显示文本

平时我们在使用Excel制作表格的时候,经常会遇到由于文本内容较多,导致这些内容无法在一个单元格中完全显示。常规的方法是将单元格设置为“自动换行”,但是这样会影响整个文件的美观。下例是某小区的入住登记...

WinForms 中的 CheckBox 控件使用指南

在WinForms中,CheckBox控件是一个允许用户选择或取消选择的单选按钮。它通常用于表示布尔值(真/假)或允许多选的情况。以下是如何使用CheckBox控件的一些基本信息和示例代码。创建...

图片转文字--四种OCR工具的安装和使用

本文仅测试简单的安装和使用,下一步应该是测试不同数据集下的检测准确率和检测效率,敬请期待。作者的系统环境是:笔记本:ThindPadP520OS:win11显卡:QuadroP520一、EasyO...

C# 给Word每一页设置不同图片水印

Word中设置水印时,可加载图片设置为水印效果,但通常添加水印效果时,会对所有页面都设置成统一效果,如果需要对每一页或者某个页面设置不同的水印效果,则可以参考本文中的方法。下面,将以C#代码为例,对W...

集成的面向对象控件Xtreme Controls正式发布v17.0.0

CodejockXtremeControls为Windows图形用户软件工程师提供众多的有关MFC的控件产品,该产品是通过完全测试并专门为图形用户设计的一款专业控件。它是一款集成了面向对象的控件被...

Win10 Build 10061老问题修复新问题来

|责编:刘菲菲【中关村在线软件资讯】4月23日消息:微软今天正式推送了Windows10Build10061预览版这个版本除了正常的功能更新和调整外,还修复了多个bug。其中一部分对于开发者开...