栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

【软件开发架构平台】CH10 RESTful API的实现

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

【软件开发架构平台】CH10 RESTful API的实现

请求和URL的重构

请求数据的获取

@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)
Controller响应的重构

基本要求:状态码、错误码、数据封装

@Getter
//序列化时空的数据不会被包含
@JsonInclude(JsonInclude.Include.NON_NULL)
public class CommonResponse implements Serializable {
    private int status;
    private String msg;
    private T data;

    private CommonResponse(int status){
        this.status=status;
    }
}

VODTODODAOPO

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 handleException(Exception e){
		ServerResponse 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协议传输
用户鉴权与OAuth

用户鉴权

  • 授权,指用户访问API的权限问题,主要用于第三方登录
  • OAuth:鉴权的开放标准
  • Spring Security OAuth2组件实现了OAuth规范

OAuth2四种授权方式:

  • 授权码
  • 隐藏式
  • 密码式
  • 客户端凭证
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/845250.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号