曹县网站开发公司,百度关键词搜索推广,wordpress模板怎么安装教程,计算机 网站开发 文章今天难得双更#xff0c;大家点个关注捧个场
原文地址#xff1a;后端系统开发之——接口参数校验 - Pleasure的博客
下面是正文内容#xff1a;
前言 在上一篇文章中提到了接口的开发#xff0c;虽然是完成了#xff0c;但还是缺少一些细节——传入参数的校验。 即用户…今天难得双更大家点个关注捧个场
原文地址后端系统开发之——接口参数校验 - Pleasure的博客
下面是正文内容
前言 在上一篇文章中提到了接口的开发虽然是完成了但还是缺少一些细节——传入参数的校验。 即用户传入的参数要符合系统的使用需求。比如用户名和密码的长度要适宜虽然可以在前端页面直接进行筛选但是在后端再加一层可以使系统更加稳固。 这篇文章就主要来谈谈这个。具体的文件内容详见上一篇博文。 正文 前置知识 主要是关于正则表达式的知道的可以直接跳过。 . 点号 匹配除换行符以外的任意单个字符。\d 匹配一个数字字符。\w 匹配一个单词字符包括字母、数字和下划线。\s 匹配一个空白字符包括空格、制表符、换行符等。^ 匹配字符串的开始位置。$ 匹配字符串的结束位置。\b 匹配一个单词边界。[] 字符集匹配其中任意一个字符。| 或用于在两个模式之间选择一个。 匹配零次或一次前面的元素。 匹配一次或多次前面的元素。*** 匹配零次或多次前面的元素。{n} 匹配前面元素恰好 n 次。{n,} 匹配前面元素至少 n 次。{n,m} 匹配前面元素至少 n 次至多 m 次。 正式操作 接口返回的响应信息格式要以接口文档为准。 这里的信息响应格式统一为{code message data}在Result.java中已经进行了规范。 虽然传入参数的校验可以通过手动的方式进行检验即通过if和else的判断来进行检验但当参数的规模增多代码的编写量也就成倍的增多能偷懒就偷懒。 所以这里就需要用到一个新的依赖——Spring Validation。 同样的先在pom.xml文件中添加下面的内容。 dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-validation/artifactId
/dependency 我们只需要在参数前添加下面这样的字段就可以起到校验的作用 package org.example.controller;import jakarta.validation.constraints.Pattern;
import org.example.pojo.Result;
import org.example.pojo.User;
import org.example.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;RestController
RequestMapping(/user)
Validated
public class UserController {Autowiredprivate UserService userService;PostMapping(register)public Result register(Pattern(regexp ^\\S{5,16}$) String username, Pattern(regexp ^\\S{5,16}$) String password) {//查询用户User u userService.findByUserName(username);if (u null) {//没有占用//注册userService.register(username, password);return Result.success();} else {//占用return Result.error(用户名已被占用);}//注册}
}然而返回的参数格式是{timestamp status error path}不符合要求 最后再来规范一下响应信息的格式以符合接口文档的要求。 在org.example文件加下新建Exception文件夹其下新建Java类GlobalExceptionHandler.java。 package org.example.exception;import org.example.pojo.Result;
import org.springframework.util.StringUtils;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.RestControllerAdvice;RestControllerAdvice
public class GlobalExceptionHandler {ExceptionHandler(Exception.class)public Result handleException(Exception e){e.printStackTrace();return Result.error(StringUtils.hasLength(e.getMessage())? e.getMessage() : 操作失败);}
}测试传入参数操作完成。 尾声 后面是关于登录接口的开发。