1、概述
在注册系列的最后几篇博文中,我们将以 MVC 方式构建所需要到的大部分功能。
我们现在将把这些 API 中的一部分转换为更具 REST 风格。
2、注册操作
让我们从注册操作开始:
.
这与原来的 MVC 实现有何不同呢?
该请求现在正确映射到 HTTP POST
通过 @ResponseBody 注解直接返回一个合适的 DTO 并进行转换序列化,之后直接进入响应体
我们不再处理方法中的错误处理
我们还删除了旧的 showRegistrationPage() — 因为不需要显示注册页面。
3、registration.html
为了适应上述的变化,我们现在需要修改 registration.html :
使用 Ajax 提交注册表单
以 JSON 的方式接收操作后响应的结果
.
.
.
4、异常处理
随着 RESTful API 的数量的增长,异常处理逻辑当然也会变得更加成熟。
我们使用 @ControllerAdvice 机制来干净利落地处理程序抛出的异常,不过 我们需要一种新的异常类型。
BindException — 在 UserDto 验证(如果无效)时抛出。 我们将重写默认的 ResponseEntityExceptionHandler 中的 handleBindException() 方法往响应体中添加错误:
.
我们还需要处理我们的自定义异常 UserAlreadyExistException — 当用户注册一个已经存在的电子邮件时就会抛出该异常:
.
6、通用响应
我们还需要改进 GenericResponse 实现来保存这些验证错误信息:
.
6、UI — 字段和全局错误
最后,让我们看看如何使用 jQuery 处理字段和全局错误:
.
.
注意:
如果存在验证错误 — 则 message 对象包含 error 字段,error 对象包含全局错误
我们在每个字段旁边显示该字段的错误信息
我们在表单的最后一个地方显示所有的全局错误
7、结论
这篇博文的重点是将 API 转换为 RESTful 风格,并简单介绍了前端处理 API 的方法。
jQuery 前端在本次内容中并不是重点,它只是一个基本的潜在客户端,您可以在任何 JS 框架中实现这些逻辑,而后端的 API 仍然完全相同。
领取专属 10元无门槛券
私享最新 技术干货