首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

学习 Spring Security:RESTful 化注册 API

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 仍然完全相同。

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180206A1DHEQ00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券