本规范基于项目现有代码实现,定义了API接口的设计原则和标准。所有API必须遵循RESTful设计理念,确保接口的一致性、可维护性和易用性。
R<T>格式。路径结构:
/{resource}/{action} 或 /{resource}/{id}/{action}/geo/nearest, /get_openid, /user_info控制器映射:
@RequestMapping("/{module}")定义模块路径@GetMapping, @PostMapping等注解Content-Type:
application/json@RequestBody注解接收JSON数据参数传递:
@RequestParam@RequestBody@PathVariable(项目中暂未使用)统一响应类:R<T>
{
"code": Integer, // 状态码
"message": String, // 响应消息
"data": T // 响应数据,可为空
}
成功响应:
R.success(code, message, data)构造失败响应:
R.fail(code, message)构造成功状态码:
SuccessResultCode枚举中失败状态码:
FailResultCode枚举中异常状态码:
ExceptionResultCode枚举中认证方式:
Authorization: Bearer <token>X-Token 或 token headertoken字段拦截器配置:
AuthInterceptor负责Token校验/、/get_openid、Swagger相关路径Token管理:
TokenService生成和校验TokenuserId放入request属性全局异常处理器:CustomExceptionHandler
BindException:参数绑定异常ConstraintViolationException:约束违反异常CustomException:自定义业务异常Exception:未知异常异常响应:
R.fail(code, message)格式分页类:Page<T>
{
"pageNum": int, // 当前页码
"pageSize": int, // 每页大小
"total": long, // 总记录数
"list": List<T> // 数据列表
}
分页插件:使用pagehelper实现分页
application.yml中CorsConfig
/api/**http://localhost:3000文档工具:使用Knife4j(基于Swagger)
Knife4jConfig中/doc.html字段描述:
@Schema注解描述请求/响应字段示例:
@Schema(description = "更新用户信息请求")
public class UpdateUserInfoRequest {
@Schema(description = "头像(可选)")
private String avatar;
}
/v1/、/v2/)