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的地址(这个地址是固定不变的,不能改)



具体代码中怎么操作



相关推荐
devlei2 小时前
从源码泄露看AI Agent未来:深度对比Claude Code原生实现与OpenClaw开源方案
android·前端·后端
pshdhx_albert2 小时前
AI agent实现打字机效果
java·http·ai编程
沉鱼.443 小时前
第十二届题目
java·前端·算法
努力的小郑3 小时前
Canal 不难,难的是用好:从接入到治理
后端·mysql·性能优化
赫瑞3 小时前
数据结构中的排列组合 —— Java实现
java·开发语言·数据结构
Victor3564 小时前
MongoDB(87)如何使用GridFS?
后端
Victor3564 小时前
MongoDB(88)如何进行数据迁移?
后端
小红的布丁4 小时前
单线程 Redis 的高性能之道
redis·后端
GetcharZp4 小时前
Go 语言只能写后端?这款 2D 游戏引擎刷新你的认知!
后端
周末也要写八哥5 小时前
多进程和多线程的特点和区别
java·开发语言·jvm