RestTemplate、MockMVC、Swagger

rest代码风格

硬编码的部分在实际开发中都是会替换成枚举对象

SpringMVC会自动把json格式的post请求转化为对应接收的 对象

响应请求时,也会自动把 对象转化为 json格式的



RestTemplate

浏览器的地址栏只能提供get请求访问后端,如果要使用post方式发送请求,要提交表单,比较麻烦

现在前后端分离模式下,要专注后端的开发,要模拟请求,就要使用下面的几种方式:

(1)通过RestTemplate调用(只适用于调用restful风格的请求)

现在都是微服务架构,订单和商品服务在两个不同的服务器上,当我们在订单服务系统(Java代码实现)中想要调用商品服务的http请求去查询商品时,就要使用RestTemplate调用。

但是这种方式对于商品服务平行迁移到多个服务器上,这种url写死的方式,更改不方便,对于负载均衡不太好,可以使用feign。

当bean没有无参构造函数的时候,Spirng会自动拿到有参的构造函数,参数进行自动注入

加不加@Autowired都一样,但是当有参构造函数有多个时,就需要在其中一个构造函数上加@Autowired

上述用法时Spring官方推荐的用法

在Java代码中调用另一个http的请求

restTemplate的get请求(展示getForObject)

(1)restTemplate.getForObject:三个参数,第一个参数是url地址,第二个参数是第一个参数url地址,返回的数据内容,如果是一个对象,第二个参数就填写指定的Class(同时这个对象类必须要有无参构造方法和get、set方法)、第三个参数是url地址中的@PathVariable占位符的参数值,如果url地址中@PathVariable占位符的参数有多个,第三个参数是别变长的。按照指定的Class返回对象

(2)restTemplate.post的post请求(展示postForEntity)

参数和上面差不多,但是ForEntity和ForObject返回值有点不同。注意参数的类型代表的含义(要记住)

restTemplate的get请求用于查询

restTemplate的post请求用于添加

restTemplate的delete请求用于删除(无返回值)

restTemplate的put请求用于修改数据库(无返回值)

使用restTemplate的exchange请求可以自定义成上面的请求,并且获得返回值。



在SpringMVC中使用不了webclient,需要额外开发webflux



MockMVC:不启动项目,模拟http请求

不依赖tomcat和web服务器

不需要启动项目,就可以在@test方法中模拟http请求



Swagger

Swagger的由来:前端抱怨后端给的接口文档与实际情况不一致,后端又觉得维护接口文档耗时耗力,来不及更新

Swagger的使用:

第一步:

Springfox用于将代码中的注解,转化为swagger中的rest接口的描述和UI展示(json格式)

第二步:固定格式,个别参数改一下即可

第三步:启动项目,访问swagger的地址(这个地址是固定不变的,不能改)



具体代码中怎么操作



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

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

相关文章

[A-03] ARMv8/ARMv9-多级Cache架构

ver 0.1 前言 前面文章我介绍了Cache的基本架构、Cache的详细的结构,有了一定的cache的基础,对cache机制也有了sense。实际上Cache作为CPU架构中存储机制的核心组件和CPU的微架构以及系统的总线架构还是密切相关的,不同的体系下&#xff0c…

传统数据处理系统存在的问题

传统应用的数据系统架构设计时,应用直接访问数据库系统。当用户访问量增加时,数据库无法支撑日益增长的用户请求的负载,从而导致数据库服务器无法及时响应用户请求,出现超时的错误。 出现这种情况以后,在系统架构上就采…

【Axure高保真原型】中继器表格——移入显示详情卡片案例

今天和大家分享中继器表格——移入显示详情卡片的原型模板,鼠标移入员工号或姓名会弹出员工卡片,可以查看更详细的信息。这个表格是用中继器制作的,所以使用也很方便,只需要维护中继器表格里的信息,即可自动生成交互效…

第一百四十二节 Java数据类型教程 - Java字符数据类型

Java数据类型教程 - Java字符数据类型 Character类的一个对象包装一个char值。 字符类包含isLetter()和isDigit()方法来检查字符是否为字母和数字。 toUpperCase()和toLowerCase()方法将字符转换为大写和小写。 该类提供了一个构造函数和一个工厂valueOf()方法来从char创建对…

Kubernetes云原生存储解决方案openebs部署实践-4.0.1版本(helm部署)

Kubernetes云原生存储解决方案openebs部署实践-4.0.1版本(helm部署) 简介 OpenEBS 是一种开源云原生存储解决方案。OpenEBS 可以将 Kubernetes 工作节点可用的任何存储转化为本地或复制的 Kubernetes 持久卷。OpenEBS 帮助应用和平台团队轻松地部署需要…

深度学习图像生成与分割模型详解:从StyleGAN到PSPNet

文章目录 Style GANDeeplab-v3FCNAdversarial AutoencodersHigh-Resolution Image Synthesis with Latent Diffusion ModelsNeRF: Representing Scenes as Neural Radiance Fields for View SynthesisPyramid Scene Parsing Network Style GAN 输入是一个潜在向量 (z)&#xff…

[激光原理与应用-98]:南京科耐激光-激光焊接-焊中检测-智能制程监测系统IPM介绍 - 2 - 什么是激光器焊接

目录 一、什么是激光焊接 1.1 概述 1.2 激光焊接的优点 二、激光焊接的应用 2.1 哪些场合必须使用激光焊接 1. 汽车制造业 2. 航空航天领域 3. 电子行业:消费类电子3C 4. 医疗器械制造 5. 新能源锂电池行业 6. 其他领域 三、激光焊接的分类 3.1 按焊接…

【靶机实战】Apache Log4j2命令执行漏洞复现

# 在线靶场 可以通过访问极核官方靶场开启靶机实验:极核靶场 -> 漏洞复现靶场 -> Log4j2-RCE 原文:【靶机实战】Apache Log4j2命令执行漏洞复现 - 极核GetShell (get-shell.com) # 简介 Apache Log4j2 是一个广泛使用的 Java 日志记录库&#…

【ROS2】初级:CLI工具- 理解话题(或主题)

理解话题 目标:使用 rqt_graph 和命令行工具来内省 ROS 2 话题。 教程级别:初学者 时间:20 分钟 目录 背景 先决条件 任务 设置2 rqt_graph3 ros2 话题列表4 ros2 话题回声5 ros2 话题信息6 ros2 接口显示7 ros2 话题发布8 ros2 话题赫兹 清理…

技术革新引领钢材质量智能化检测新纪元,基于YOLOv5全系列【n/s/m/l/x】参数模型开发构建钢材工业生产场景下钢材缺陷智能检测识别系统

随着人工智能(AI)技术的迅猛发展,其应用领域不断拓宽,正深刻改变着传统产业的运作模式。在钢材生产这一基础工业领域,AI的引入正为钢材的质量检测带来革命性的变革。 在传统的钢材生产流程中,质量检测是确…

基于Bootstrap Blazor开源的.NET通用后台权限管理系统

前言 今天大姚给大家分享一个基于Bootstrap Blazor开源的.NET通用后台权限管理系统,后台管理页面兼容所有主流浏览器,完全响应式布局(支持电脑、平板、手机等所有主流设备),可切换至 Blazor 多 Tabs 模式,…

打破数据生产力的桎梏,打造数据分析驱动的新型组织

在当前的经济环境下,各行业面临着前所未有的挑战,降本增效成为企业普遍追求的目标。数字化转型被视为实现这一目标的关键路径。通过数字化手段,企业能够探索新的增长机会,提升运营效率,并有效控制成本支出。在这一转型…

纯前端低代码开发脚手架 - daelui/molecule

daelui/molecule低代码开发脚手架:分子组件开发、预览、打包 页面代码示例、大屏代码示例预览 可开发页面组件 可开发大屏组件 项目git地址:https://gitee.com/daelui/molecule 在线预览:http://www.daelui.com/daelui/molecule/app/index.…

探索如何赋予对象迭代魔法,轻松实现非传统解构赋值的艺术

前言 今天下午在网上冲浪过程中看到这样一个问题 面试题:如何让 var [a, b] {a: 1, b: 2} 解构赋值成功? 据说是某大厂面试题,于是我学习了一下这个问题,写下这篇文章记录一下。 学习过程 要想解决这个问题首先要知道什么是解…

概率论与数理统计_上_科学出版社

contents 前言第1章 事件与概率1.1 随机事件与样本空间1.1.1 样本空间1.1.2 随机事件1.1.3 事件之间的关系与运算 1.2 概率的三种定义及其性质1.2.1 概率的统计定义1.2.2 概率的古典定义1.2.3 概率的几何定义1.2.4 概率的性质 1.3 常用概型公式1.3.1 条件概率计算公式1.3.2 乘法…

百日筑基第十一天-看看SpringBoot

百日筑基第十一天-看看SpringBoot 创建项目 Spring 官方提供了 Spring Initializr 的方式来创建 Spring Boot 项目。网址如下: https://start.spring.io/ 打开后的界面如下: 可以将 Spring Initializr 看作是 Spring Boot 项目的初始化向导&#xff…

【数智化人物展】数势科技创始人兼CEO黎科峰:数智化时代To B软件行业面临颠覆与重塑...

黎科峰 本文由数势科技创始人兼CEO黎科峰投递并参与由数据猿联合上海大数据联盟共同推出的《2024中国数智化转型升级先锋人物》榜单/奖项评选。 大数据产业创新服务媒体 ——聚焦数据 改变商业 2020年,对我而言,是职业生涯中的一个重大转折点。在全球新…

频域信号通过逆傅里叶变换恢复成时域信号

频域信号通过逆傅里叶变换恢复成时域信号 flyfish import numpy as np import matplotlib.pyplot as plt from scipy.fftpack import fft, ifft plt.rcParams[font.sans-serif] [SimHei] plt.rcParams[axes.unicode_minus] False# 设置参数 t np.linspace(0, 1, 1000, en…

Simulink中示波器连续运行的方法

1.在Simulink中,经常要使用到示波器,默认示波器是定时运行的,只能观察到一小部分运行的波形;实际调试过程中,经常要连续运行,因此,需要设置示波器为连续运行模式,下面将介绍示波器连续运行的方法。 打开Simulink仿真软件,找到仿真设置按钮,点击设置: 2.将其停止时间…

音频流格式启用数据流

音频流格式启用数据流 音频流格式启用数据流使用 AudioStreamBasicDescription 结构在哪里以及如何设置流格式 音频流格式启用数据流 在单个样本帧级别处理音频数据时,就像使用音频单元一样,仅仅指定正确的数据类型来表示音频是不够的。单个音频样本值中…