Spring Boot和Swagger UI

swagger-ui-300x293 我已经一年没有从头开始开发Spring Web应用程序了,如果我不参加QA自动化工程师的培训,那么这段时间甚至会更长。 由于这个原因,我开发了一个示例REST应用程序。 除了Swagger,一切对我来说都很熟悉。 因此,我将描述我在Spring BootSwagger UI中获得的新经验。

前言

首先,我需要提到我已经使用过Spring IO。 是的,这是我第一次将Spring用作流行的Java框架而不是平台。 真是令人兴奋。 与我以前的Spring经验相比,Spring IO的配置过程和项目设置变得更加轻松快捷。

根据培训主题,示例Web应用程序需要具有简单的业务逻辑。 我决定开发一个应用程序,使房东(房地产经纪人)可以管理他们的房地产(公寓)。 因此,应用程序的用户可以对房东和公寓执行CRUD操作。

现在,当您知道在什么情况下必须使用swagger时,我可以省略关于应用程序和培训的其余故事,而跳到本文的主要主题-Swagger和Spring Boot集成。

Spring靴+招摇

为了将Swagger插入Web Spring应用程序,您需要向构建文件(Maven或Gradle)添加依赖项。 它在Git官方页面上非常简单明了。

之后,您可以添加一个单独的配置Java类,该类负责Swagger:

import com.mangofactory.swagger.configuration.SpringSwaggerConfig;
import com.mangofactory.swagger.models.dto.ApiInfo;
import com.mangofactory.swagger.plugin.*;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.context.annotation.*;@Configuration
@EnableSwagger
@EnableAutoConfiguration
public class SwaggerConfig {private SpringSwaggerConfig springSwaggerConfig;@Autowiredpublic void setSpringSwaggerConfig(SpringSwaggerConfig springSwaggerConfig) {this.springSwaggerConfig = springSwaggerConfig;}@Beanpublic SwaggerSpringMvcPlugin customImplementation() {return new SwaggerSpringMvcPlugin(this.springSwaggerConfig)//This info will be used in Swagger. See realisation of ApiInfo for more details..apiInfo(new ApiInfo("SmartMe education API","This app is for education, training purpose. It represents model of landlords and apartments for rent",null,null,null,null))//Here we disable auto generating of responses for REST-endpoints.useDefaultResponseMessages(false)//Here we specify URI patterns which will be included in Swagger docs. Use regex for this purpose..includePatterns("/landlords.*");}}

配置文件完成后,您可以继续使用Controllers。 顺便说一句,您需要通过Spring Boot Application类将swagger配置放入扫描区域。

@Api(basePath = "/landlords", value = "Landlords", description = "Operations with Landlords", produces = "application/json")
@RestController
@RequestMapping(value = "/landlords", produces = MediaType.APPLICATION_JSON_VALUE)
public class LandLordController {private static final Logger logger = LoggerFactory.getLogger(LandLordController.class);@Autowiredprivate LandLordService landLordService;@RequestMapping(method = RequestMethod.POST,consumes = MediaType.APPLICATION_JSON_VALUE)@ResponseStatus(HttpStatus.CREATED)@ApiOperation(value = "Create new Landlord", notes = "Creates new Landlord")@ApiResponses(value = {@ApiResponse(code = 400, message = "Fields are with validation errors"),@ApiResponse(code = 201, message = "") })public LandLord createLandLord(@Valid @RequestBody LandLordDTO landLordDTO) {logger.info("LandLord DTO is: "+landLordDTO);LandLord landLord = new LandLord(landLordDTO);landLordService.create(landLord);return landLord;}//Other endpoints are omitted
}

这就是所有需要JSON格式的API文档。 要检查它,请启动您的应用程序并转到http:// localhost:8080 / api-docs

Spring Boot + Swagger用户界面

很好的JSON格式的API文档很好,但是对其他团队成员(例如前端开发人员)没有太大帮助。 因此,我们必须插入UI。 从官方git repo下载swagger ui。 之后,将其解压缩并复制dist目录,并将其粘贴到src / java / resources中的文件夹 / public/ static/ resources中。

现在在swagger中重命名dist 。 打开index.html并更改JavaScript代码,它应如下所示:

$(function () {var url = window.location.search.match(/url=([^&]+)/);if (url && url.length > 1) {url = decodeURIComponent(url[1]);} else {url = "/api-docs";}
//rest of code...

这就对了。 现在重新启动应用程序并导航到http:// localhost:8080 / swagger / index.html

您必须看到以下内容:

春潮

翻译自: https://www.javacodegeeks.com/2015/03/spring-boot-swagger-ui.html

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

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

相关文章

mysql5.7.22打不开_windows下mysql-5.7.22-winx64突然启动不了,报错Could not open log file

本文摘自classinstance.cn。windows下mysql-5.7.22-winx64突然启动不了,感觉启动几秒钟后就自己关闭了,看了下启动日志:2019-08-25T10:57:08.389404Z 0 [Warning] option wait_timeout: unsigned value 31536000 adjusted to 21474832019-08-…

HDU1530 最大流问题

第一次写Dinic 然后贴一下 最基础的网络流问题 嘎嘎: #include <iostream> #include<cstdio> #include<string.h> #include<queue> using namespace std; const int M205; __int64 map[M][M]; int n,m,dist[M]; queue<int>q; void readdate() {_…

把python37添加到环境变量配置_关于在win 10上成功创建一个Django项目时遇到django-admin的手动配置环境变量问题。...

前言初学Python Web 在创建第一个Djang项目的时候出现了很多的问题&#xff0c;今天和大家分享并记录一下这次艰难的历程&#xff01;一、官网下载Python以及安装Django1、Python的下载安装链接&#xff1a;大家最好使用谷歌浏览器&#xff0c;因为翻译的很到位(大家下载最新版…

在Ant中显示路径

在博客文章Java and Ant Properties Refresher和Ant <echoproperties /> Task中 &#xff0c;我写了一篇关于如何了解Ant构建如何看到属性的文章&#xff0c;这有助于更好地理解构建。 通常情况下&#xff0c;在构建过程中看到构建中使用的各种路径也很有价值&#xff0c…

如何删除数据库中的所有用户表(表与表之间有外键关系)

1、由表名求字段名 create proc up_008(table varchar(20)) as begin declare sql varchar(99) select sql\select name from syscolumns where idobject_id(\ select sqlsql\\\\table\\\\\)\ --select sql exec(SQL) end exec up_008 a_idx2 2、编程删…

Azure开发者任务之一:解决Azure Storage Emulator初始化失败

初学Windows Azure&#xff1a; 我打算开始学习Windows Azure。我安装了Azure SDK&#xff0c;然后在“Cloud”标签下选择Windows Azure模板&#xff0c;创建了一个项目&#xff0c;然后又创建了一个Web角色。 在aspx文件上&#xff0c;我只添加了一个标签&#xff0c;但是当我…

关于Java里如何跳出一个多重循环

一般我们要跳出一个循环&#xff0c;用break就OK了&#xff0c;比如&#xff1a; 1 for(int i1;i<5;i){ 2   if&#xff08;条件&#xff09; 3     break&#xff1b; 4   //一些代码 5 } 但是如果这时候&#xff0c;在这一层循环外面还有一层循环的话&#…

CCRC认证对企业的作用?

CCRC认证&#xff08;中国网络安全审查认证&#xff09;是针对网络产品和服务的安全审查制度&#xff0c;它对企业的作用主要体现在以下几个方面&#xff1a; 1. 提升产品安全性 CCRC认证要求企业对其网络产品和服务进行全面的安全审查&#xff0c;确保符合国家网络安全标准和…

java运行python3_python写脚本并用java调用python(三)

1)编写mytest.py完成一个简单加法计算# coding:utf8#def 表示一个方法 adderdef adder(a, b):return ab#这里执行adder方法并打印出结果print adder(1,2)2)运行以上脚本方式如图12 3 打印成功&#xff01;3)java调用python脚本的两种方式Process process Runtime.getRuntime(…

Hibernate教程– ULTIMATE指南(PDF下载)

编者注&#xff1a;在本文中&#xff0c;我们提供了全面的Hibernate教程。 Hibernate ORM&#xff08;简称Hibernate&#xff09;是一个对象关系映射框架&#xff0c;它有助于将面向对象的域模型转换为传统的关系数据库。 Hibernate通过用高级对象处理功能代替直接与持久性相关…

mysql单源多表同步单库单表_MySQL主从复制单表或者多表

MySQL数据库安装不过多的介绍了&#xff1a;必须保证2个数据库的版本一致。 主数据库&#xff1a;192.168.0.43 从数据库&#xff1a;192.168.0.53 修改43主数据MySQL数据库安装不过多的介绍了&#xff1a;必须保证2个数据库的版本一致。主数据库&#xff1a;192.168.0.43从数据…

悲观锁定时如何避免可怕的死锁-以及Java 8的一些用法!

有时您根本无法避免&#xff1a;通过SQL进行悲观锁定。 实际上&#xff0c;当您要在共享的全局锁上同步多个应用程序时&#xff0c;它是一个很棒的工具。 有些人可能认为这是在滥用数据库。 如果可以解决您遇到的问题&#xff0c;我们认为可以使用您拥有的工具。 例如&#xf…

object - c 函数的值

函数名说明int rand()随机数生成。&#xff08;例&#xff09;srand(time(nil)); //随机数初期化int val rand()%50; //0&#xff5e;49之间的随机数int abs(int a)整数的绝对值&#xff08;例&#xff09;int val abs(-8); →8※浮点数的时候用fabs。double fabs(double …

xshell 秘钥连接_如何使用PuTTY和xshell 分别远程连接linux,并配置秘钥认证

使用PuTTY 连接并配置密钥认证第一步&#xff1a;下载PuTTY下载 .zip 64位的电脑 32位的putty也能用第二步&#xff1a;配置基本信息打开 PuTTY端口默认是22 (端口是可以改的)ip 地址如果忘记&#xff0c;ifconfig 查看一下Load >Open输入登录名 密码即可完成登录若出现上…

滨河新区(黄河楼)夜景

转载于:https://www.cnblogs.com/ysx4221/p/3454517.html

使用Junit测试名称

命名测试 在创建Junit测试时&#xff0c;通常没有实际使用该方法的名称。 Junit运行程序使用反射来发现测试方法&#xff0c;并且从版本4开始&#xff0c;您不再被限制以test开始方法的名称。 测试方法的名称用于文档目的。 人们遵循不同的风格。 您可以使用给定的given_Somet…

java 门面模式_Java门面模式

一、简介隐藏系统的复杂性&#xff0c;对外提供统一的访问入口&#xff0c;外部系统访问只通过此暴露出的统一接口访问。是一种结构型模式。封装子系统接口的复杂性&#xff0c;提供统一的对外接口&#xff0c;能够使子系统更加简单的被使用。二、结构及使用场景如上所示&#…

摘成功道路上容易被忽视的5项技能

本文摘自《电子工程师专辑》&#xff0c;来源&#xff1a;http://forum.eet-cn.com/FORUM_POST_10008_1200257568_0.HTM。 人人都渴望成功&#xff0c;在通往成功的道路上&#xff0c;少不了技能和运气&#xff0c;运气往往难以受人控制&#xff0c;技能却能好好把握&#xff0…

selenium java测试_java+selenium 自动化测试

在项目上使用自动化测试&#xff0c;是为了跑主流程的回归测试&#xff0c;提高测试效率&#xff0c;在每个测试版本中把主要的精力放在发版内容新增的需求中&#xff1b;根据项目的功能模块&#xff0c;把业务主流程和使用频率高的功能抽取出来进行自动化测试&#xff0c;作为…

通用名称

泛型类型参数名称通常包含一个大写字母字符。 如果您开始阅读有关泛型的官方ORACLE文档&#xff0c;则第一个示例是 /*** Generic version of the Box class.* param <T> the type of the value being boxed*/ public class Box<T> {// T stands for "Type&q…