找别人做网站要考虑哪些,网站导航条设计欣赏,国外广告联盟平台,06628 网页制作与网站建设优雅的后端接口
一个后端接口大致分为四个部分#xff1a;接口地址(url)、接口请求方式(get、post等)、请求数据(request)、响 应数据(response)。 一、URL Method Rest 设计风格 》 Restful API 简单理解#xff1a; URI 是用来唯一标志一个互联网资源#xff1b;Me…优雅的后端接口
一个后端接口大致分为四个部分接口地址(url)、接口请求方式(get、post等)、请求数据(request)、响 应数据(response)。 一、URL Method Rest 设计风格 》 Restful API 简单理解 URI 是用来唯一标志一个互联网资源Method 是用来标识当前请求对该资源进行什么操 作。 版本号、状态码、过滤信息、ContentType、Cookie 。。。 二、请求参数
1. 参数校验
比较常见的做法在业务层进行参数校验
POST /users
GET /users/{user_id}
PUT /users/{user_id}
DELETE /users/{user_id}
public String addUserV1(UserDTO userDTO) {
if (userDTO null
|| userDTO.getId() null
|| userDTO.getAccount() null
|| userDTO.getEmail() null
|| userDTO.getPassword() null) {
return 对象或者对象字段不能为空;
}
if (StrUtil.isEmpty(userDTO.getAccount())
|| StrUtil.isEmpty(userDTO.getPassword())
|| StrUtil.isEmpty(userDTO.getEmail())) {
return 不能输入空字符串;
}
if (userDTO.getAccount().length() 6 ||
userDTO.getAccount().length() 11) {
return 账号长度必须是6-11个字符;
}
if (userDTO.getPassword().length() 6 ||
userDTO.getPassword().length() 11) {
}不能说有什么错而且格式排版整齐还一目了然但是。。。。太繁琐
2. Validator BindResult
接下来只需要在接口需要校验的参数上加上 valid 注解并添加 BindResult 参数即可完成验证。 但是。。。每个接口都要添加 BindingResultResult 还是很烦
3. Validator 自动抛出异常
return 密码长度必须是6-11个字符;
}
if (!Pattern.matches(^[0-9a-zA-Z]\\w*([0-9a-zA-Z]\\.)[0-9a-zAZ]$, userDTO.getEmail())) {
return 邮箱格式不正确;
}
return success;
}
import javax.validation.constraints.Email;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;
Data
public class UserDTO {
NotNull(message 用户id不能为空)
private Integer id;
NotNull(message 用户账户不能为空)
Size(min 6, max 11, message 账户长度必须是6-11个字符)
private String account;
NotNull(message 用户密码不能为空)
Size(min 6, max 11, message 账户密码必须是6-11个字符)
private String password;
NotNull(message 用户邮箱不能为空)
Email(message 邮箱格式不正确)
private String email;
}
PostMapping(/v2/user)
public String addUserV2(RequestBody Valid UserDTO userDTO, BindingResult
bindingResult) {// 如果有参数校验失败会将错误信息封装成对象组装在 BindingResult 里
for (ObjectError error : bindingResult.getAllErrors()) {
return error.getDefaultMessage();
}
return userService.addUserV1(userDTO);
}没有最好的标准但是一个规范的接口肯定比没有约束的接口要来的优雅。
PostMapping(/v3/user)
public String addUserV3(RequestBody Valid UserDTO userDTO) {
return userService.addUserV1(userDTO);
}