首页
/ Lsky Pro API路由架构深度解析

Lsky Pro API路由架构深度解析

2025-07-08 07:20:27作者:齐添朝

项目背景

Lsky Pro是一个功能强大的图床系统,其API路由设计体现了现代PHP框架Laravel的最佳实践。本文将深入分析其API路由架构,帮助开发者理解如何构建一个安全、高效的图片管理API系统。

核心路由结构

Lsky Pro的API路由采用版本化设计,所有路由都位于v1前缀下,这种设计为未来可能的API升级提供了良好的扩展性。

路由分组与中间件

系统使用Laravel的路由分组功能,统一应用了两个重要特性:

  1. 版本前缀v1
  2. 全局中间件CheckIsEnableApi,用于检查API功能是否启用
Route::group([
    'prefix' => 'v1',
    'middleware' => CheckIsEnableApi::class,
], function () {
    // 路由定义
});

公开API端点

系统提供了几个无需认证的公共API:

1. 存储策略查询

GET /v1/strategies
  • 控制器:StrategyController@index
  • 功能:获取系统支持的存储策略列表

2. 图片上传

POST /v1/upload
  • 控制器:ImageController@upload
  • 功能:处理图片上传请求

3. Token获取

POST /v1/tokens
  • 控制器:TokenController@store
  • 特殊配置:应用了throttle:3,1限流中间件,限制为每分钟最多3次请求
  • 功能:获取认证Token

认证保护API端点

所有需要认证的路由都位于auth:sanctum中间件保护下,使用Laravel Sanctum进行API认证:

1. 图片管理

GET /v1/images - 获取用户图片列表
DELETE /v1/images/{key} - 删除指定图片
  • 控制器:ImageController@imagesImageController@destroy
  • 功能:查看和管理用户上传的图片

2. 相册管理

GET /v1/albums - 获取相册列表
DELETE /v1/albums/{id} - 删除指定相册
  • 控制器:AlbumController@indexAlbumController@destroy
  • 功能:管理用户的图片相册

3. Token管理

DELETE /v1/tokens
  • 控制器:TokenController@clear
  • 功能:清除当前用户的所有Token

4. 用户信息

GET /v1/profile
  • 控制器:UserController@index
  • 功能:获取当前用户的基本信息

安全设计亮点

  1. 认证分离:公共API和私有API明确分离,私有API全部需要认证
  2. 限流保护:对Token获取接口实施严格限流,防止恶意请求
  3. 中间件隔离:通过中间件实现功能开关检查,便于全局控制API可用性
  4. 资源保护:所有删除操作都要求认证,防止未授权访问

最佳实践建议

基于Lsky Pro的路由设计,我们可以总结出以下API设计最佳实践:

  1. 采用版本化API设计,为未来升级留有余地
  2. 对敏感操作实施限流保护
  3. 使用中间件实现横切关注点(如认证、限流、功能开关)
  4. RESTful风格的路由命名
  5. 控制器方法单一职责(每个方法只做一件事)

扩展思考

在实际项目中,可以进一步扩展此路由架构:

  • 添加更细粒度的权限控制
  • 实现API文档自动生成
  • 增加请求参数验证
  • 添加操作日志记录

Lsky Pro的API路由设计简洁而强大,为开发者提供了一个优秀的参考范例,展示了如何构建一个安全、可维护的图片管理API系统。