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



具体代码中怎么操作



相关推荐
Tadas-Gao8 小时前
GraphQL:下一代API架构的设计哲学与实践创新
java·分布式·后端·微服务·架构·graphql
番茄迷人蛋8 小时前
后端项目服务器部署
java·运维·服务器·spring
毕设源码-郭学长8 小时前
【开题答辩全过程】以 基于Java高考志愿填报推荐系统为例,包含答辩的问题和答案
java·开发语言·高考
老华带你飞8 小时前
酒店预约|基于springboot 酒店预约系统(源码+数据库+文档)
java·数据库·vue.js·spring boot·后端·spring
dob8 小时前
为什么你的if-else越写越乱?聊聊状态机
后端
李子园的李8 小时前
Java Optional 完全指南:优雅处理 null 的利器
java
古城小栈8 小时前
Spring Boot + 边缘 GenAI:智能座舱应用开发实战
java·spring boot·后端
j_hy8 小时前
OOP组件及事件处理(一)
java·开发语言
无名之辈J8 小时前
IDEA插件
java
开心就好20258 小时前
使用 Ipa Guard 应对 App Store 4.3 风险的一些实践
后端