一止长渊
后端数据校验

JSR303(java 规范提案:303 提案),是关于数据校验的规范。在前端发送的数据在前端经过校验后,发送给后台还需要经过校验后才能入库,这是因为如果有人知道你的接口就可以通过 PostMan 工具向你的接口恶意发送坏数据入库,给其他用户浏览页面就会造成不好的影响,为此需要使用后端数据校验。前台防君子后台防小人

JSR 主要使用 javax.validation.constraints 定义的注解此外也可以采用 hibernate 提供的一些注解或者自定义规则注解@Pattern

  • 1)、给 Bean 需要校验字段添加校验注解 可以在 javax.validation.constraints,并定义 message 错误提示
  • 2)、在 Controller 方法体中对相应的 Bean 添加上**@Valid**,否则光在字段标注了注解是没有用的:public R save(@Valid @RequestBody BrandEntity brand)
  • 效果:校验错误以后会有默认的响应,并显示错误信息 message
  • 3)、在方法体校验参数后面紧跟 BindingResult,就可以获取到校验的结果
分布式下文件上传

image.png
在微服务分布式情况下,不同于以前的单体项目校园中铺项目,是将用户上传的图片放置在单体项目所在服务器的某个文件夹下,单体应用也在这个文件夹,然后单体应用就可以直接访问。但是在分布式情况下,一个服务可能有很多实例部署在多台服务器上,如果仍然使用向单体项目一样的图片存储,则会导致该服务的其他实例的服务器上没有该用户上传的图片,所以为了解决这个问题,分布式中通过使用将用户的图片同一放置在一个位置,然后每个服务都来访问这个位置来存取图片就可以了,这里使用阿里云的对象存储 OSS。

JS脚本请求跨域

跨域请求是针对 JS 的,也就是浏览器输入的网址协议+地址+端口号部分如果与执行脚本发送的 HTTP 请求地址有一处不同的话,就会被 CORS policy 跨域协议所
拦截,注意这里只针对 JS 脚本发出的 HTTP 请求
截屏2021-03-18 00.35.54.png
图中地址栏端口号为 8001,但是请求的地址为 88 端口,当执行登陆时,login 的 js 脚本就会发送请求给 88,就会导致跨域请求,但是图中的验证码虽然也是向 88 端口发送请求,但是其实在 src 属性中填充的地址,不是 js 脚本发送的请求所以不会引起跨域请求

微服务基础概念

1.微服务

拒绝大型单体引用,基于业务边界进行服务微化拆分,各个服务独立部署运行,,每个服务之间相互调用

例如:订单服务 -》商品服务 -》仓库服务

2.集群

例如:京东就是一个分布式系统,众多业务运行在不同的机器上,所有业务构成了一个大型的业务集群。

集群是一个物理形态,分布式是一个工作方式

分布式的每一个结点,都可以做集群,而集群并不一定就是分布式的

结点:集群中一个服务器

Nacos:如何调用其他微服务(中)

上节我们将微服务模块注册到了注册中心Nacos中,接下来就是如何实现微服务模块之间接口的调用。

这里我们使用SpringCloud-Alibaba提供的OpenFeign进行微服务模块之间调用,如果微服务A需要调用微服务模块B的接口1,那么我们如何实现呢?

原理

​ 微服务A、微服务B相互调用,前提是两个微服务都已经注册到注册中心Nacos中。然后微服务模块A1需要调用微服务B时,就去注册中心查看健康可用微服务模块B的地址,