# laravel_api **Repository Path**: chenbool/laravel_api ## Basic Information - **Project Name**: laravel_api - **Description**: laravel5.8 - **Primary Language**: PHP - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2019-08-24 - **Last Updated**: 2026-04-26 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README

Build Status Total Downloads

## Laravel API 项目 基于 Laravel 5.8 开发的 RESTful API 项目,提供用户认证和用户信息管理功能。 ## 目录 - [技术栈](#技术栈) - [功能特性](#功能特性) - [环境要求](#环境要求) - [安装部署](#安装部署) - [数据库配置](#数据库配置) - [API 接口文档](#api-接口文档) - [项目结构](#项目结构) - [核心模块说明](#核心模块说明) - [错误码说明](#错误码说明) - [常用命令](#常用命令) - [注意事项](#注意事项) ## 技术栈 - **PHP**: ^7.1.3 - **Laravel**: 5.8.* - **JWT 认证**: chenbool/jwt ^1.0 - **数据库**: MySQL (可通过 config/database.php 配置) ## 功能特性 ### API 接口 | 接口 | 方法 | 说明 | 认证 | |------|------|------|------| | `/api/` | GET | 欢迎接口 | 否 | | `/api/login` | POST | 用户登录 | 否 | | `/api/token` | GET | 获取 Token | 否 | | `/api/user` | GET | 获取用户信息 | 是 | ### 用户模块 - 用户登录(手机号 + 密码) - JWT Token 认证 - 用户信息查询(包含 id, phone, nick_name, avatar_url, gender, city, province, balance) ## 环境要求 - PHP >= 7.1.3 - OpenSSL PHP Extension - PDO PHP Extension - Mbstring PHP Extension - Tokenizer PHP Extension - XML PHP Extension - Composer - MySQL 5.7+ 或 MariaDB 10.1+ ## 安装部署 ### 1. 克隆项目 ```bash git clone cd laravel_api ``` ### 2. 安装依赖 ```bash composer install ``` > 如果遇到内存限制问题,运行:`composer install --ignore-platform-reqs` ### 3. 配置环境变量 ```bash cp .env.example .env ``` ### 4. 生成应用密钥 ```bash php artisan key:generate ``` ### 5. 配置数据库连接 编辑 `.env` 文件: ``` APP_NAME=LaravelAPI APP_ENV=local APP_DEBUG=true APP_URL=http://localhost:8000 # 数据库配置 DB_CONNECTION=mysql DB_HOST=127.0.0.1 DB_PORT=3306 DB_DATABASE=laravel_api DB_USERNAME=root DB_PASSWORD= # JWT 密钥(使用 APP_KEY) JWT_SECRET=your_jwt_secret_key ``` ### 6. 创建数据库 ```bash mysql -u root -p -e "CREATE DATABASE laravel_api CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;" ``` ### 7. 运行数据库迁移 ```bash php artisan migrate ``` ### 8. 启动服务 ```bash php artisan serve ``` 服务启动后,访问 `http://localhost:8000/api/` 可看到欢迎信息。 ## 数据库配置 ### 用户表 (user) 由于项目使用自定义表名 `user`,需要创建对应的数据表。建议的表结构如下: ```sql CREATE TABLE `user` ( `id` int(11) NOT NULL AUTO_INCREMENT, `phone` varchar(20) NOT NULL COMMENT '手机号', `password` varchar(32) NOT NULL COMMENT '密码(MD5)', `nick_name` varchar(50) DEFAULT NULL COMMENT '昵称', `avatar_url` varchar(255) DEFAULT NULL COMMENT '头像URL', `gender` tinyint(1) DEFAULT 0 COMMENT '性别: 0-未知, 1-男, 2-女', `city` varchar(50) DEFAULT NULL COMMENT '城市', `province` varchar(50) DEFAULT NULL COMMENT '省份', `balance` decimal(10,2) DEFAULT 0.00 COMMENT '余额', `token` varchar(255) DEFAULT NULL COMMENT 'JWT Token', `created_at` timestamp NULL DEFAULT NULL, `updated_at` timestamp NULL DEFAULT NULL, PRIMARY KEY (`id`), UNIQUE KEY `phone` (`phone`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='用户表'; ``` > 注意:表名在 `app/Model/User.php` 中已配置为 `user`,且 `timestamps` 设置为 `false`。 ## API 接口文档 ### 1. 欢迎接口 **请求** ```http GET /api/ ``` **响应** ``` hi! welcome to shop ``` --- ### 2. 用户登录 **请求** ```http POST /api/login Content-Type: application/json { "phone": "13800138000", "password": "your_password" } ``` **参数说明** | 参数 | 类型 | 必填 | 说明 | |------|------|------|------| | phone | string | 是 | 手机号 | | password | string | 是 | 密码(MD5加密) | **成功响应** ```json { "code": 0, "msg": "登录成功", "result": { "token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9...", "iss": "http://localhost", "exp": "2024-xx-xx xx:xx:xx", "exp_time": "2024-xx-xx xx:xx:xx", "user": { "id": 1, "phone": "13800138000", "nick_name": "用户名", "avatar_url": "", "gender": 0, "city": "", "province": "", "balance": 0 } } } ``` **错误响应 - 用户不存在** ```json { "code": -10, "msg": "你还没有注册", "result": {} } ``` **错误响应 - 密码错误** ```json { "code": -10, "msg": "密码错误", "result": {} } ``` --- ### 3. 获取 Token **请求** ```http GET /api/token ``` **响应** ```json { "code": 0, "msg": "获取成功", "result": { "token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9...", "iss": "http://localhost", "exp": "2024-xx-xx xx:xx:xx", "exp_time": "2024-xx-xx xx:xx:xx" } } ``` --- ### 4. 获取用户信息 **请求** ```http GET /api/user?token=your_jwt_token ``` **参数说明** | 参数 | 类型 | 必填 | 说明 | |------|------|------|------| | token | string | 是 | JWT Token | **响应** ```json { "code": 0, "msg": "查询成功", "result": [ { "id": 1, "phone": "13800138000", "nick_name": "用户名", "avatar_url": "", "gender": 0, "city": "", "province": "", "balance": 0 } ] } ``` **未登录响应** ```json { "code": -100, "msg": "你还没有登陆", "result": {} } ``` --- ## 项目结构 ``` laravel_api/ ├── app/ # 应用核心代码 │ ├── Console/ # 控制台命令 │ │ └── Kernel.php # 控制台内核 │ ├── Exceptions/ # 异常处理 │ │ └── Handler.php # 异常处理器 │ ├── Helpers/ # 辅助函数 │ │ └── functions.php # 公共函数 │ ├── Http/ │ │ ├── Controllers/ │ │ │ ├── Api/ # API 控制器 │ │ │ │ ├── LoginController.php # 登录控制器 │ │ │ │ └── UserController.php # 用户控制器 │ │ │ ├── Auth/ # 认证控制器( Laravel Breeze 等) │ │ │ └── Controller.php # 基础控制器 │ │ └── Middleware/ # 中间件 │ ├── Model/ # 数据模型 │ │ └── User.php # 用户模型 │ └── Providers/ # 服务提供者 ├── bootstrap/ # 启动文件 │ └── app.php # 应用启动 ├── config/ # 配置文件 │ ├── app.php # 应用配置 │ ├── database.php # 数据库配置 │ ├── auth.php # 认证配置 │ └── ... # 其他配置 ├── database/ │ ├── migrations/ # 数据库迁移 │ ├── seeds/ # 数据种子 │ └── factories/ # 模型工厂 ├── public/ # 公共入口 ├── resources/ # 资源文件 ├── routes/ # 路由定义 │ ├── api.php # API 路由 │ ├── web.php # Web 路由 │ ├── console.php # 控制台路由 │ └── channels.php # 频道路由 ├── storage/ # 存储目录 ├── tests/ # 测试文件 ├── .env # 环境配置 ├── artisan # CLI 入口 ├── composer.json # 依赖配置 └── phpunit.xml # 测试配置 ``` ## 核心模块说明 ### 1. 辅助函数 (app/Helpers/functions.php) 项目定义了一些全局辅助函数: | 函数 | 说明 | |------|------| | `json($data)` | 将数据转换为 JSON 响应 | | `returnJson($msg, $code, $data)` | 返回 JSON 响应(统一格式) | | `jwt_encode($key)` | 生成 JWT Token | | `jwt_decode($jwt, $key)` | 解密 JWT Token | **returnJson 使用示例** ```php // 成功响应 returnJson('登录成功', 0, $data); // 错误响应 returnJson('参数错误', -1); ``` **jwt_encode 返回格式** ```php [ 'token' => 'eyJ0eXAiOiJKV1Qi...', // JWT Token 'iss' => 'http://localhost', // 签发者 'exp' => 1234567890, // 过期时间戳 'exp_time' => '2024-01-01 12:00:00' // 过期时间格式化 ] ``` ### 2. 用户模型 (app/Model/User.php) ```php namespace App\Model; use Illuminate\Database\Eloquent\Model; class User extends Model { protected $table = 'user'; // 自定义表名 public $timestamps = false; // 关闭自动时间戳 } ``` ### 3. 中间件 (app/Http/Middleware/Api.php) API 请求中间件,用于处理请求验证和过滤。 ## 错误码说明 | 错误码 | 说明 | |--------|------| | 0 | 成功 | | -1 | 通用错误 | | -10 | 登录错误(用户不存在或密码错误) | | -100 | 未登录 | | -500 | 服务器错误 | ## 常用命令 ### 开发相关 ```bash # 启动开发服务器 php artisan serve # 启动开发服务器(指定端口) php artisan serve --port=8080 # 监听文件变化自动重启(需安装 composer require barryvdh/laravel-reflexr) php artisan reflexr ``` ### 数据库相关 ```bash # 创建迁移文件 php artisan make:migration create_users_table # 运行迁移 php artisan migrate # 回滚上一次迁移 php artisan migrate:rollback # 回滚所有迁移 php artisan migrate:reset # 填充数据 php artisan db:seed ``` ### 缓存相关 ```bash # 清除配置缓存 php artisan config:clear # 清除路由缓存 php artisan route:clear # 清除视图缓存 php artisan view:clear # 清除所有缓存 php artisan cache:clear ``` ### 其他 ```bash # 生成应用密钥 php artisan key:generate # 查看路由列表 php artisan route:list # 创建控制器 php artisan make:controller Api/UserController ``` ## 注意事项 ### 1. 安全性 - 生产环境请将 `.env` 文件加入 `.gitignore` - 生产环境设置 `APP_DEBUG=false` - 使用 HTTPS 加密传输 - 定期更换 JWT 密钥 ### 2. Token 有效期 - 当前 Token 有效期为 **2 小时**(7200秒) - 可在 `app/Helpers/functions.php` 中修改 `jwt_encode` 函数的 `$token['exp']` 值 ### 3. 密码存储 - 当前使用 MD5 加密存储密码 - 生产环境建议使用 bcrypt 或 argon2 加密 ### 4. 生产环境部署 ```bash # 优化自动加载 composer install --optimize-autoloader --no-dev # 清除缓存 php artisan config:cache php artisan route:cache php artisan view:cache ``` ## 常见问题 ### Q1: 登录返回 "你还没有注册"? **解决**:确认数据库 `user` 表中是否存在对应手机号的记录。 ### Q2: Token 过期后如何处理? **解决**:用户需要重新调用登录接口获取新的 Token。 ### Q3: 如何修改 JWT 过期时间? **解决**:编辑 `app/Helpers/functions.php` 文件中 `jwt_encode` 函数的 `$token['exp']` 值。 ### Q4: 跨域请求失败? **解决**:可以在 `app/Http/Middleware/Api.php` 中添加 CORS 头部,或使用 Laravel CORS 扩展包。 ## License The Laravel framework is open-source software licensed under the [MIT license](https://opensource.org/licenses/MIT).