请求数据的获取
@RequestParam:获取URL中的查询参数值
@RequestBody:获取POST或PUT中对象的值
@PathVariable:获取URL中的参数值
参数校验
@Valid注解和@Validation注解
-
@Validation注解是SpringFramework中提供的验证机制,是JSR-303规范的一个变种,可以使用在类型、方法和方法参数上,但不能使用在类的成员属性上
-
@Valid注解是Hibernate框架提供的验证机制,符合JSR-303标准,比@Validation更强大,可以使用在类的成员属性上,所以也支持嵌套验证
-
SpringFramework默认使用@Validation注解进行参数校验
-
- @NotNull和@Null 不能为空和必须为空
- @NotEmpty 不能为空(包括null、字符串长度为0、集合大小为0)
- @NotBlank 不能为空(包括null、字符串首位空格后为0)
基本要求:状态码、错误码、数据封装
@Getter
//序列化时空的数据不会被包含
@JsonInclude(JsonInclude.Include.NON_NULL)
public class CommonResponse<T> implements Serializable {
private int status;
private String msg;
private T data;
private CommonResponse(int status){
this.status=status;
}
}
VO\DTO\DO\DAO\PO
VO:返回给前端进行View显示的对象
DTO:数据传输对象,一般用于业务逻辑层和控制器层的数据传输,对后端数据进行一定的封装,提高传输效率和隐藏实现
DO:领域对象,一般指业务逻辑层使用的对象,符合业务需求,和数据库中的表基本对应
PO:持久化对象,完全ORM中使用的对象,和数据库的表完全对应
响应数据的JSON序列化
- 要求API的响应均要序列化为JSON(fastjson、jakson、Gson)
- SpringBoot在Controller里加上@ResponseBody自动完成序列化
- 使用统一响应
全局异常处理
使用@ControllerAdvice和@ExceptionHandler
@ExceptionHandler:统一处理某一类异常,从而能够减少代码重复率和复杂度
@ControllerAdvice:异常集中处理,更好的使业务逻辑与异常处理剥离开;对Controller层进行拦截
@ControllerAdvice
public class GlobalExceptionAdvice{
@ExceptionHandler(value = Exception.class)
@ResponseBody
public ServerResponse<ExceptionResponse> handleException(Exception e){
ServerResponse<ExceptionResponse> serverResponse = new ServerResponse<>();
return serverResponse;
}
用户认证与JWT
用户认证
前后端未分离架构中的会话跟踪:
- Cookie、Session
分离后:
- 浏览器无法自动使用Cookie、跨域问题或没有浏览器可用
- 服务器进行系统架构后Session不便存储
- Token机制
-
- 在Web应用中访问资源的凭据
- 用户请求登陆成功后,服务器基于某种机制生成一个字符串——token
- token机制与session机制的主要区别是服务器是否存储
- 之后的请求,客户端都可以带上token,服务器根据token进行用户认证
- token机制要解决token的加密、解密、过期等问题
- 广义上,sessionId也是token机制的一种实现
JWT(Spring Security中对其提供集成)
- 定义了一种简洁的、自包含的、以JSON对象的形式进行安全传递信息的方法
- 采用数字签名,可以被验证和信赖。且可以对数字签名进行加密。由Header(自描述)、Payload(存放实际需要传递的数据,包括标准字段和自定义字段)和Signature(对上述两部分的签名,防止数据篡改)组成。
- 可以用于认证和数据传输,减少对服务器的访问
- token只要发出后无法废止或修改
- 包含认证信息,防止泄露应设置尽可能短的有效时间
- 采用HTTPS协议传输
用户鉴权
- 授权,指用户访问API的权限问题,主要用于第三方登录
- OAuth:鉴权的开放标准
- Spring Security OAuth2组件实现了OAuth规范
OAuth2四种授权方式:
- 授权码
- 隐藏式
- 密码式
- 客户端凭证
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)