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



具体代码中怎么操作



相关推荐
折哥的程序人生 · 物流技术专研6 小时前
第4篇:Lambda 简化策略模式(Java 8+)
java·设计模式·策略模式·函数式编程·lambda·代码简化·扩充系列
GoGeekBaird6 小时前
我开源了 BeeWeave,给 AI Agent 搭一个越用越懂你的知识创作台
后端·github
researcher-Jiang6 小时前
高性能计算之OpenMP——超算习堂学习1
android·java·学习
西门吹-禅8 小时前
java springboot N+1问题
java·开发语言·spring boot
DLYSB_8 小时前
生命通道:如何用 HIS 医疗系统直连网络声光终端,打造“零延误”的危急值响应网关?
java·网络·数据库·报警灯
weixin_BYSJ19878 小时前
SpringBoot + MySQL 乒乓球运动员信息管理系统项目实战--附源码04954
java·javascript·spring boot·python·django·flask·php
AI小码8 小时前
LLM 应用的缓存工程:当每次 API 调用都在燃烧成本
java·人工智能·spring·计算机·llm·编程·api
犀利豆9 小时前
AI in Harness(四)
人工智能·后端
Hui Baby9 小时前
Spring Security
java·后端·spring
leoZ2319 小时前
Claude 驱动的全栈开发:Spring Boot + Vue 的 BS 架构实践
vue.js·spring boot·架构