基于SpringCloud的Microservices架构实战案例-在线API管理

2023-11-11

simplemall项目前几篇回顾:

源码地址:https://github.com/backkoms/simplemall

前端和后端的唯一联系,变成了API接口;API文档变成了前后端开发人员联系的纽带,变得越来越重要,swagger就是一款让你更好的书写API文档的框架。 本实战案例中也引入swagger2作为API管理工具,下面罗列下swagger2+SpringBoot使用步骤。

SpringBoot集成Swagger2

第一步,pom配置

 
  1. <!-- https://mvnrepository.com/artifact/io.springfox/springfox-swagger2 -->

  2. <dependency>

  3.    <groupId>io.springfox</groupId>

  4.    <artifactId>springfox-swagger2</artifactId>

  5.    <version>2.6.1</version>

  6. </dependency>

  7.  

  8. <!-- https://mvnrepository.com/artifact/io.springfox/springfox-swagger-ui -->

  9. <dependency>

  10.    <groupId>io.springfox</groupId>

  11.    <artifactId>springfox-swagger-ui</artifactId>

  12.    <version>2.6.1</version>

  13. </dependency>

第二步编写配置管理类Swagger2Config

 
  1. package com.simplemall.micro.serv.page;

  2.  

  3. import org.springframework.context.annotation.Bean;

  4. import org.springframework.context.annotation.Configuration;

  5.  

  6. import io.swagger.annotations.ApiOperation;

  7. import springfox.documentation.builders.ApiInfoBuilder;

  8. import springfox.documentation.builders.PathSelectors;

  9. import springfox.documentation.builders.RequestHandlerSelectors;

  10. import springfox.documentation.service.ApiInfo;

  11. import springfox.documentation.spi.DocumentationType;

  12. import springfox.documentation.spring.web.plugins.Docket;

  13. import springfox.documentation.swagger2.annotations.EnableSwagger2;

  14.  

  15. /**

  16. * swagger2 configuration

  17. *

  18. * @author guooo

  19. *

  20. */

  21. @Configuration//SpringBoot启动时自动装载

  22. @EnableSwagger2 //打开swagger2功能,缺失的话同样无法打开ui页面

  23. public class Swagger2Config {

  24.  

  25.    @Bean

  26.    public Docket createRestApi() {

  27.        return new Docket(DocumentationType.SWAGGER_2).apiInfo(apiInfo()).select()

  28.                .apis(RequestHandlerSelectors.basePackage("com.simplemall.micro.serv.page.api"))

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

  30.                .paths(PathSelectors.any())

  31.                .build();

  32.    }

  33.  

  34.    private ApiInfo apiInfo() {

  35.        return new ApiInfoBuilder().title("Front app Swagger apis").description("For micro-service 's app to use")

  36.                .version("V1.0").build();

  37.    }

  38. }

经过以上两步简单的配置后,可以直接进行接口代码的编写。

 
  1. @Api(value = "用户服务", tags = "用户服务接口")

  2. @RestController

  3. @RefreshScope // 使用该注解的类,会在接到SpringCloud配置中心配置刷新的时候,自动将新的配置更新到该类对应的字段中。需要重新触发加载动作可以使用POST方式请求/refresh接口,该接口位于spring-boot-starter-actuator依赖,调用前需添加否则404。

  4. public class APIAccountController {

  5.  

  6.    @ApiOperation(value = "用户登陆")

  7.    @RequestMapping(value = "acc/login", method = { RequestMethod.POST })

  8.    public RestAPIResult<String> login(@ApiParam(value = "手机号") @RequestParam(required = true) String phone,

  9.            @ApiParam(value = "密码") @RequestParam(required = true) String password, HttpSession session) {

  10.        RestAPIResult<String> restAPIResult = new RestAPIResult<>();

  11.        Account account = accountFeignClient.login(phone, password);

  12.    }

使用swagger进行API管理的话,对代码有一定的侵入性,这个需要考虑在内。之前也提到过几种在线API的管理方式,点击链接《介绍几款常用的在线API管理工具

使用SpringBoot技术,再以maven原始的方式引入swagger使用的话,远不如一个starter来的爽,这里介绍一个swagger-starter,可以更快捷的与spring boot集成使用。

swagger-spring-boot-starter应用

在pom.xml中引入依赖:【当前最新版本 1.7.0.RELEASE】

 
  1. <dependency>

  2.    <groupId>com.spring4all</groupId>

  3.    <artifactId>swagger-spring-boot-starter</artifactId>

  4.    <version>1.7.0.RELEASE</version>

  5. </dependency>

注意:从1.6.0开始,我们按Spring Boot官方建议修改了artifactId为swagger-spring-boot-starter,1.6.0之前的版本不做修改,依然为使用spring-boot-starter-swagger !

在应用主类中增加@EnableSwagger2Doc注解

 
  1. @EnableSwagger2Doc

  2. @SpringBootApplication

  3. public class Bootstrap {

  4.  

  5.    public static void main(String[] args) {

  6.        SpringApplication.run(Bootstrap.class, args);

  7.    }

  8.  

  9. }

默认情况下就能产生所有当前Spring MVC加载的请求映射文档。

参数配置,配置示例

 
  1. swagger.enabled=true

  2.  

  3. swagger.title=spring-boot-starter-swagger

  4. swagger.description=Starter for swagger 2.x

  5. swagger.version=1.4.0.RELEASE

  6. swagger.license=Apache License, Version 2.0

  7. swagger.licenseUrl=https://www.apache.org/licenses/LICENSE-2.0.html

  8.  

  9. swagger.termsOfServiceUrl=https://github.com/dyc87112/spring-boot-starter-swagger

  10.  

  11. swagger.contact.name=didi

  12. swagger.contact.url=http://blog.didispace.com

  13.  

  14. swagger.contact.email=dyc87112@qq.com

  15. swagger.base-package=com.didispace

  16. swagger.base-path=/**

  17. swagger.exclude-path=/error, /ops/**

  18.  

  19. swagger.globalOperationParameters[0].name=name one

  20. swagger.globalOperationParameters[0].description=some description one

  21. swagger.globalOperationParameters[0].modelRef=string

  22. swagger.globalOperationParameters[0].parameterType=header

  23. swagger.globalOperationParameters[0].required=true

  24. swagger.globalOperationParameters[1].name=name two

  25. swagger.globalOperationParameters[1].description=some description two

  26. swagger.globalOperationParameters[1].modelRef=string

  27. swagger.globalOperationParameters[1].parameterType=body

  28. swagger.globalOperationParameters[1].required=false

  29.  

  30. // 取消使用默认预定义的响应消息,并使用自定义响应消息

  31. swagger.apply-default-response-messages=false

  32. swagger.global-response-message.get[0].code=401

  33. swagger.global-response-message.get[0].message=401get

  34. swagger.global-response-message.get[1].code=500

  35. swagger.global-response-message.get[1].message=500get

  36. swagger.global-response-message.get[1].modelRef=ERROR

  37. swagger.global-response-message.post[0].code=500

  38. swagger.global-response-message.post[0].message=500post

  39. swagger.global-response-message.post[0].modelRef=ERROR

详细介绍可参考源码,地址:https://github.com/SpringForAll/spring-boot-starter-swagger。由于JDK代码编译版本的限制,JDK1.7是不支持的,可使用1.8

 

扩展阅读:

 

欢迎加入我的星球

 
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

基于SpringCloud的Microservices架构实战案例-在线API管理 的相关文章

  • 代理IP的高匿名,匿名和透明的区别

    如果从隐藏使用代理用户的级别上划分 代理可以分为三种 即高度匿名代理 普通匿名代理和透明代理 1 高度匿名代理不改变客户机的请求 这样在服务器看来就像有个真正的客户浏览器在访问它 这时客户的真实IP是隐藏的 服务器端不会认为我们使用了代理
  • Latex 中插入 Matlab 代码

    这篇文章将介绍如何在 Latex 排版过程中添加 Matlab 代码 功能效果 主要有如下排版功能 语法高亮 自动添加边框 自动添加行号 先上图 大家感受一下效果 而实现这些只需要一行代码加一个包 插入代码块 usepackage list

随机推荐

  • Unity Hub导入项目“静夜思”报错error CS0619: ‘GUIText‘ is obsolete: ‘GUIText has been removed. Use UI.Text inst

    报错 问题 按照控制台报错位置 找到Assets Standard Assets Utility FPSCounter cs文件 根据提示 GUIText is obsolete GUIText has been removed Use U
  • RFID医药供应链管理系统解决方案——铨顺宏FUWIT

    1 社会背景 根据世界卫生组织的报告 全球假药比例已经超过10 中国医学会数据显示 我们每年至少有20万人死于假药与用药不当 国际上已经对医疗产品的跟踪十分重视 美国FDA已经通过立法 加强在药物运输 销售 访问 追溯体系的应用 目前医疗领
  • qt5+osg多线程的解决方案

    问题描述 Cannot make QOpenGLContext current in a different thread 解决思路 在主线程中将qt窗体中的QOpenglContext moveToThread到窗体线程中 这样窗体线程在
  • 知识存储-cypher查询语句基础(1)

    1 概述 我们在进行关系型数据库操作的时候使用sql 在使用其他数据库时使用sparsql 在操作neo4j时使用cypher语法 这是一种非常简单的查询语法 方便我们掌握 1 neo4j中的相关概念 节点 节点是图数据库中的一个基本元素
  • 安装neo4j出现的问题

    安装步骤 1 jdk安装 下载地址 https www oracle com java technologies javase downloads html jdk使用11以上版本 点击安装 设置环境变量 全部路径 bin 2 neo4j安
  • 高斯滤波的快速实现

    http www cnblogs com ImageVision archive 2012 06 11 2545555 html 二維高斯函數具有旋轉對稱性 處理後不會對哪一個方向上的邊緣進行了過多的濾波 因此相對其他濾波器 具有無法比擬的
  • python PyQt5事件监听机制

    1 事件监听机制实际上应该是事件循环机制 搜这个搜到的结果更多更详细 2 qt的事件循环实际上不是多线程实现的 实现机制实际上是事件循环和消息队列 随便打开一个QT编写的程序 运行ProcessExplorer等待一段时间后查看进程后发现内
  • idea中java程序打jar包的两种方式(超详细)

    java程序打成的jar包有两种类型 一种是可直接执行的runnable jar文件 另一种是包含多个主类 运行时需要指定主类全类名的jar包 下面我们细说在idea中两种jar包的打包方法及执行jar包时的命令 第一种 含多个主类的jar
  • 【机器学习】最优化方法:梯度下降法

    1 概念 梯度下降法 Gradient Descent 又称最速下降法 Steepest descent 是一种常用的一阶优化方法 是一种用于求解无约束最优化问题的最常用的方法 它选取适当的初始值 并不断向负梯度方向迭代更新 实现目标函数的
  • 颜色空间YCrCb

    YCrCb即YUV 主要用于优化彩色视频信号的传输 使其向后相容老式黑白电视 与RGB视频信号传输相比 它最大的优点在于只需占用极少的频宽 RGB要求三个独立的视频信号同时传输 其中 Y 表示明亮度 Luminance或Luma 也就是灰阶
  • 深度学习网络__tensorflow__第四讲__神经网络优化

    本文为转载北京大学 人工智能实践 Tensorflow笔记 课程 链接 https www icourse163 org course PKU 1002536002 Tensorflow 笔记 第四讲 神经网络优化 4 1 神经元模型 用数
  • VirtualBox的下载与安装

    文章来源 http sh qihoo com pc 91c30d12ff6bd60e9 cota 4 tj url xz sign 360 e39369d1 refer scene so 1 1 下载VirtualBox VirtualBo
  • 2.4.10 Profile HEA参数

    最后更新2021 07 23 HEA有两种使用方式 第一种是独立作为虚拟以太网支持卡使用 第二种是作为普通网卡 性能更高 无论哪一种方式都需要对HEA做一些特殊的初始化设置 并且是互斥的 我们先来看看系统中HEA的状态 操作如 lt 图 2
  • vulhub安装时的问题

    在安装vulhub时 出现cannot import transport或者是无法导入其他的模块 从网上找到的方法都尝试之后均不行 这个文件夹明明存在 但是他就是说找不到 解决方法 在使用pip进行安装的时候 网上找的他们都是直接默认安装的
  • python __doc__方法

    doc 方法是python的内置方法之一 该方法通常会输出指定对象中的注释部分 NB 注意 后面的部分表示输出结果 代码如下 class Debug This is a class for debugging def init self T
  • ESP32-C3入门教程 基础篇(一、ADC采样)

    经过前面的折腾 设计好了自己的测试开发板 搭建好了开发环境 然后正式开始进行功能测试了 测试顺序先从简单的开始吧 一步一步来 目录 前言 1 ADC采样示例测试 1 1 DMA连续采样 1 2 单次采样 1 3 测试源码 2 ESP32 C
  • linux之perf(2)list事件

    Linux之perf 2 list事件 Author Onceday Date 2023年9月3日 漫漫长路 才刚刚开始 参考文档 Tutorial Perf Wiki kernel org perf list 1 Linux manual
  • DevOps理念:开发与运维的融合

    在现代软件开发领域 DevOps 不仅仅是一个流行的词汇 更是一种文化 一种哲学和一种方法论 DevOps 的核心理念是通过开发和运维之间的紧密合作 实现快速交付 高质量和持续创新 本文将深入探讨 DevOps 文化的重要性 原则以及如何在
  • C语言 - 整形在内存中的存储方式

    一 以补码的形式存储在内存当中 1 有符号型的整数二进制首位0表示正 1表示负数 2 正数的原码 反码 补码都相同 如 3 负数的反码为原码的首位数不变 其他位按位取反所得 补码为反码 1 如 当然 要得到负数的原码 可以反过来 即补码 1
  • 基于SpringCloud的Microservices架构实战案例-在线API管理

    simplemall项目前几篇回顾 1基于SpringCloud的Microservices架构实战案例 序篇 2基于SpringCloud的Microservices架构实战案例 架构拆解 3基于SpringCloud的Microserv