Laravel API项目目录结构围绕无状态、轻视图、重接口特点组织,核心包括按版本分层的Api控制器、api.php路由入口、专用请求验证类、Resource响应格式化、简洁模型与服务分离、日志缓存优化。

Laravel API项目的目录结构在默认基础上,会围绕“无状态、轻视图、重接口”的特点做针对性组织。它不是简单照搬Web项目结构,而是聚焦于路由分组、控制器分层、请求验证、资源转换和版本管理等核心环节。
app/Http/Controllers 目录按API层级划分
这是最直观的调整点。常见做法是将控制器归入 Api 命名空间下,并按版本或模块进一步细分:
-
App\Http\Controllers\Api\V1\UserController -
App\Http\Controllers\Api\V2\UserController -
App\Http\Controllers\Api\Internal\OrderController(内部服务接口)
这样配合路由前缀(如Route::prefix('v1')),能清晰隔离不同版本逻辑,避免混用。
routes/api.php 是API路由主入口
所有对外暴露的 RESTful 接口都定义在此文件中,Laravel 默认已启用 api 中间件组(含频率限制、无会话、JSON 响应等)。不建议把 Web 路由(如登录页、后台管理)混入其中。可按功能拆分子文件再 require,例如:
-
routes/api/users.php -
routes/api/products.php -
routes/api/internal.php(需权限校验的内部调用)
app/Http/Requests 专用于表单验证
API 请求必须严格校验输入。每个接口动作对应一个独立的 FormRequest 类:
-
App\Http\Requests\Api\V1\StoreUserRequest -
App\Http\Requests\Api\V1\UpdateUserRequest
这些类内封装规则、自定义错误消息和authorize()权限检查,控制器中直接类型提示注入,自动拦截非法请求。
app/Http/Resources 统一响应格式
避免在控制器里手动拼接 JSON,而是用 Resource 类做数据投影:
-
App\Http\Resources\Api\V1\UserResource -
App\Http\Resources\Api\V1\UserCollection
它们负责字段过滤、关系加载、条件渲染(如隐藏敏感字段),并支持.additional()补充元信息(如分页、状态码)。
app/Models 保持简洁,专注数据映射
模型只定义表名、填充白名单、隐藏字段、关联关系,不写业务逻辑。复杂操作移至 Repository 或 Service 层(如 app/Services/UserService.php),便于单元测试与复用。
storage/logs 和 storage/framework/cache 需关注权限与轮转
API 项目请求频次高,日志增长快。建议配置 logging.php 使用 daily 驱动,并设置 LOG_MAX_FILES=30;缓存目录(尤其是路由缓存 route-cache)上线前务必生成,否则影响性能。
基本上就这些。关键不在目录多复杂,而在每一层职责分明、命名一致、加载路径可预测。
大量免费API接口:立即使用
涵盖生活服务API、金融科技API、企业工商API、等相关的API接口服务。免费API接口可安全、合规地连接上下游,为数据API应用能力赋能!











