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的地址(这个地址是固定不变的,不能改)
具体代码中怎么操作