docs: 更新API文档和README中的部署说明
更新API端点描述,添加更详细的参数说明和响应示例 简化README中的部署步骤,移除冗余的服务器配置选项
This commit is contained in:
191
README.md
191
README.md
@@ -1,6 +1,6 @@
|
|||||||
# App Store 项目
|
# App Store 项目
|
||||||
|
|
||||||
这是一个基于 PHP 7.4 的 App Store 项目,使用 Bootstrap 实现 Fluent Design 风格界面,数据存储采用 MySQL 数据库。
|
这是一个基于 PHP 7.4 的 App Store 项目,使用 Bootstrap 实现 Fluent Design 风格界面,数据存储采用 MySQL 数据库。项目各页面顶栏已添加 logo 图片,路径为 `/favicon.jpeg`,点击可跳转至首页,图片设置了高度 30px、右边距 10px 以及圆角样式 `var(--border-radius)`。
|
||||||
|
|
||||||
## 项目结构
|
## 项目结构
|
||||||
```
|
```
|
||||||
@@ -49,7 +49,7 @@ app2/
|
|||||||
对于有经验的开发者,可按照以下步骤快速部署:
|
对于有经验的开发者,可按照以下步骤快速部署:
|
||||||
```cmd
|
```cmd
|
||||||
# 1. 克隆项目并进入目录
|
# 1. 克隆项目并进入目录
|
||||||
git clone <repository-url> app2
|
.git clone <repository-url> app2
|
||||||
cd app2
|
cd app2
|
||||||
|
|
||||||
# 2. 创建并配置环境文件
|
# 2. 创建并配置环境文件
|
||||||
@@ -118,7 +118,7 @@ cd app2
|
|||||||
2. 创建数据库(将`your_db_name`替换为您喜欢的数据库名称):
|
2. 创建数据库(将`your_db_name`替换为您喜欢的数据库名称):
|
||||||
```sql
|
```sql
|
||||||
CREATE DATABASE your_db_name CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
|
CREATE DATABASE your_db_name CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
|
||||||
exit
|
exit
|
||||||
```
|
```
|
||||||
|
|
||||||
#### 导入数据库结构
|
#### 导入数据库结构
|
||||||
@@ -199,145 +199,60 @@ icacls images /grant Users:(OI)(CI)W
|
|||||||
```cmd
|
```cmd
|
||||||
php -S localhost:8000
|
php -S localhost:8000
|
||||||
```
|
```
|
||||||
然后在浏览器中访问:http://localhost:8000
|
|
||||||
|
|
||||||
#### 选项B:配置Apache服务器
|
## API 文档
|
||||||
1. 确保`mod_rewrite`模块已启用
|
### 根路径 `/api`
|
||||||
2. 创建虚拟主机配置:
|
- **方法**:GET
|
||||||
```apache
|
- **功能**:返回可用端点信息
|
||||||
<VirtualHost *:80>
|
- **响应示例**:
|
||||||
ServerName appstore.local
|
|
||||||
DocumentRoot "d:/app2"
|
|
||||||
<Directory "d:/app2">
|
|
||||||
Options Indexes FollowSymLinks
|
|
||||||
AllowOverride All
|
|
||||||
Require all granted
|
|
||||||
</Directory>
|
|
||||||
</VirtualHost>
|
|
||||||
```
|
|
||||||
3. 修改`hosts`文件添加:`127.0.0.1 appstore.local`
|
|
||||||
4. 重启Apache,访问 http://appstore.local
|
|
||||||
|
|
||||||
#### 选项C:配置Nginx服务器
|
|
||||||
```nginx
|
|
||||||
server {
|
|
||||||
listen 80;
|
|
||||||
server_name appstore.local;
|
|
||||||
root d:/app2;
|
|
||||||
index index.php;
|
|
||||||
|
|
||||||
location / {
|
|
||||||
try_files $uri $uri/ /index.php?$query_string;
|
|
||||||
}
|
|
||||||
|
|
||||||
location ~ \.php$ {
|
|
||||||
fastcgi_pass 127.0.0.1:9000;
|
|
||||||
fastcgi_index index.php;
|
|
||||||
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
|
|
||||||
include fastcgi_params;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
### 8. 首次使用与安全设置
|
|
||||||
|
|
||||||
#### 管理员账号初始化
|
|
||||||
1. 访问管理员登录页面:http://localhost:8000/admin/login.php
|
|
||||||
2. 使用默认账号登录:
|
|
||||||
- 用户名:`admin@example.com`(来自config.php中的ADMIN_EMAIL)
|
|
||||||
- 密码:`admin123`(来自config.php中的ADMIN_PASSWORD)
|
|
||||||
3. **重要**:登录后立即点击右上角头像,选择**修改密码**,设置强密码
|
|
||||||
|
|
||||||
#### 安全建议
|
|
||||||
- 生产环境中设置`define('DEBUG_MODE', false);`
|
|
||||||
- 定期备份数据库
|
|
||||||
- 不要将`config.php`提交到版本控制系统
|
|
||||||
- 保持PHP和所有依赖包为最新安全版本
|
|
||||||
|
|
||||||
## 使用教程
|
|
||||||
|
|
||||||
### 开发者功能
|
|
||||||
|
|
||||||
#### 注册开发者账号
|
|
||||||
1. 访问开发者注册页面:http://localhost:8000/developer/register.php
|
|
||||||
2. 填写注册信息,提交后系统会发送验证邮件
|
|
||||||
3. 点击邮件中的验证链接激活账号
|
|
||||||
|
|
||||||
#### 上传新应用
|
|
||||||
1. 登录开发者后台:http://localhost:8000/developer/login.php
|
|
||||||
2. 点击**上传新应用**按钮
|
|
||||||
3. 填写应用信息:
|
|
||||||
- 应用名称、描述、版本号
|
|
||||||
- 选择应用类别和年龄分级
|
|
||||||
- 上传应用图标(推荐尺寸:512x512px)
|
|
||||||
- 上传应用截图(最多5张)
|
|
||||||
- 上传应用安装包(支持.zip格式)
|
|
||||||
4. 点击**提交审核**,等待管理员审核
|
|
||||||
|
|
||||||
#### 管理应用版本
|
|
||||||
1. 在开发者后台点击应用名称进入管理页面
|
|
||||||
2. 点击**发布新版本**添加应用更新
|
|
||||||
3. 填写版本变更说明和更新内容
|
|
||||||
4. 上传新版本安装包
|
|
||||||
|
|
||||||
### 管理员功能
|
|
||||||
|
|
||||||
#### 应用审核
|
|
||||||
1. 登录管理员后台:http://localhost:8000/admin/login.php
|
|
||||||
2. 点击**应用审核**菜单
|
|
||||||
3. 查看待审核应用列表,点击**查看详情**
|
|
||||||
4. 审核应用信息和安装包,点击**通过**或**拒绝**并填写反馈
|
|
||||||
|
|
||||||
#### 管理应用分类
|
|
||||||
1. 在管理员后台点击**分类管理**
|
|
||||||
2. 可以添加、编辑或删除应用分类
|
|
||||||
3. 设置分类排序和显示状态
|
|
||||||
|
|
||||||
#### 系统信息查看
|
|
||||||
1. 在管理员后台点击**系统信息**
|
|
||||||
2. 查看服务器环境、PHP配置和数据库状态
|
|
||||||
3. 监控应用总数、开发者数量和文件存储使用情况
|
|
||||||
|
|
||||||
### API使用指南
|
|
||||||
|
|
||||||
#### 获取应用列表
|
|
||||||
```http
|
|
||||||
GET /api.php?action=list&page=1&limit=10
|
|
||||||
```
|
|
||||||
返回JSON格式的应用列表数据
|
|
||||||
|
|
||||||
#### 获取应用详情
|
|
||||||
```http
|
|
||||||
GET /api.php?action=app&id=1
|
|
||||||
```
|
|
||||||
返回指定ID的应用详细信息
|
|
||||||
|
|
||||||
#### API响应格式
|
|
||||||
```json
|
```json
|
||||||
{
|
{
|
||||||
"success": true,
|
"status": "success",
|
||||||
"data": {},
|
"message": "App Store API",
|
||||||
"message": "操作成功"
|
"version": "1.0",
|
||||||
|
"endpoints": {
|
||||||
|
"/api?action=list": "获取应用列表,支持search、platform、age_rating、tag、page、limit参数。search:搜索关键词;platform:平台;age_rating:年龄分级;tag:标签;page:页码;limit:每页数量",
|
||||||
|
"/api?action=app&id=1": "获取指定ID的应用详情,需传入app_id参数。包含应用基础信息、版本、图片、评价和标签信息",
|
||||||
|
"/api?action=favorite": "收藏应用(POST方法,需app_id和user_id参数)"
|
||||||
|
},
|
||||||
|
"example": "GET /api?action=list&search=游戏&limit=10"
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
## 功能说明
|
### 应用列表 `/api?action=list`
|
||||||
- **首页**:展示最新 App 列表,包含基本信息和评分。
|
- **方法**:GET
|
||||||
- **App 信息页**:显示 App 详细信息、版本历史、预览图片和用户评价,支持用户评分。
|
- **功能**:获取应用列表,支持多条件筛选和分页查询
|
||||||
- **管理页**:管理员可以添加、删除 App,审核应用,管理标签和查看系统信息。
|
- **参数**:
|
||||||
- **开发者后台**:开发者可以注册账号、管理应用、上传新版本和查看应用统计。
|
- `search`:搜索关键词,可选
|
||||||
- **API 接口**:提供 `/api` 获取 App 列表,`/api/app/<编号>` 获取单个 App 详细信息。
|
- `platform`:平台,可选
|
||||||
|
- `age_rating`:年龄分级,可选
|
||||||
|
- `tag`:标签,可选
|
||||||
|
- `page`:页码,可选,默认1
|
||||||
|
- `limit`:每页数量,可选,默认10
|
||||||
|
- **响应示例**:
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"data": [
|
||||||
|
{
|
||||||
|
"id": "1",
|
||||||
|
"name": "示例应用",
|
||||||
|
"description": "这是一个示例应用",
|
||||||
|
"age_rating": "3+",
|
||||||
|
"avg_rating": "4.5"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"pagination": {
|
||||||
|
"total": 100,
|
||||||
|
"page": 1,
|
||||||
|
"limit": 10,
|
||||||
|
"totalPages": 10
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
## 管理员登录
|
### 应用详情 `/api?action=app&id={id}`
|
||||||
默认管理员账号信息在 `config.php` 中配置,登录后可访问管理页面。
|
- **方法**:GET
|
||||||
|
- **功能**:获取指定ID应用的详细信息,包含基础信息、版本、图片、评价和标签信息
|
||||||
## 故障排除
|
- **参数**:
|
||||||
- **数据库导入错误**:确保数据库名称为'awa'且已创建,检查SQL文件路径是否正确
|
- `id`:应用ID,必需,数字类型
|
||||||
- **权限问题**:确认 `files` 和 `images` 目录权限设置为755
|
- **响应示例**:响应包含应用基础信息、版本、图片、评价和标签信息。
|
||||||
- **邮件发送失败**:检查 `config.php` 中的SMTP配置,确保端口(通常465或587)和加密方式正确
|
|
||||||
- **类找不到错误**:运行 `composer install` 确保所有依赖已正确安装
|
|
||||||
|
|
||||||
## 注意事项
|
|
||||||
- 请确保 `files`、`images` 目录以及其子目录有足够的写入权限(推荐设置权限为755)。
|
|
||||||
- 生产环境中必须修改默认管理员密码和数据库连接信息,确保系统安全。
|
|
||||||
- 邮件服务配置:请在 `config.php` 中正确设置 SMTP 服务器地址、端口、用户名和密码,以确保开发者邮箱验证功能正常工作。
|
|
||||||
21
api.php
21
api.php
@@ -13,21 +13,30 @@ if (!isset($_GET['action'])) {
|
|||||||
'message' => 'App Store API',
|
'message' => 'App Store API',
|
||||||
'version' => '1.0',
|
'version' => '1.0',
|
||||||
'endpoints' => [
|
'endpoints' => [
|
||||||
'/api?action=list' => '获取应用列表,支持search、platform、age_rating、tag、page、limit参数',
|
'/api?action=list' => '获取应用列表,支持search、platform、age_rating、tag、page、limit参数。search:搜索关键词;platform:平台;age_rating:年龄分级;tag:标签;page:页码;limit:每页数量',
|
||||||
'/api?action=app&id=1' => '获取指定ID的应用详情',
|
'/api?action=app&id=1' => '获取指定ID的应用详情,需传入app_id参数。包含应用基础信息、版本、图片、评价和标签信息',
|
||||||
'/api?action=favorite' => '收藏应用(POST方法,需app_id和user_id参数)'
|
'/api?action=favorite' => '收藏应用(POST方法,需app_id和user_id参数)'
|
||||||
],
|
],
|
||||||
'example' => 'GET /api?action=list&platform=windows&limit=20'
|
'example' => 'GET /api?action=list&search=游戏&limit=10'
|
||||||
]);
|
]);
|
||||||
exit;
|
exit;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// 支持查询参数路由模式(不依赖URL重写)
|
// 支持查询参数路由模式(不依赖URL重写)
|
||||||
|
// 以下为各API端点详细处理逻辑
|
||||||
if (isset($_GET['action'])) {
|
if (isset($_GET['action'])) {
|
||||||
$action = $_GET['action'];
|
$action = $_GET['action'];
|
||||||
|
|
||||||
// 处理应用列表请求
|
// 处理应用列表请求,支持多条件筛选和分页查询
|
||||||
|
// 参数:
|
||||||
|
// search - 搜索关键词,可选
|
||||||
|
// platform - 平台,可选
|
||||||
|
// age_rating - 年龄分级,可选
|
||||||
|
// tag - 标签,可选
|
||||||
|
// page - 页码,可选,默认1
|
||||||
|
// limit - 每页数量,可选,默认10
|
||||||
|
// 方法: GET
|
||||||
if ($action === 'list' && $requestMethod === 'GET') {
|
if ($action === 'list' && $requestMethod === 'GET') {
|
||||||
$sql = "SELECT apps.id, apps.name, apps.description, apps.age_rating, AVG(reviews.rating) as avg_rating
|
$sql = "SELECT apps.id, apps.name, apps.description, apps.age_rating, AVG(reviews.rating) as avg_rating
|
||||||
FROM apps
|
FROM apps
|
||||||
@@ -133,7 +142,9 @@ if (isset($_GET['action'])) {
|
|||||||
exit;
|
exit;
|
||||||
}
|
}
|
||||||
|
|
||||||
// 处理应用详情请求
|
// 处理应用详情请求,获取指定ID应用的详细信息,包含基础信息、版本、图片、评价和标签信息
|
||||||
|
// 参数: id - 应用ID,必需,数字类型
|
||||||
|
// 方法: GET
|
||||||
elseif ($action === 'app' && isset($_GET['id']) && is_numeric($_GET['id']) && $requestMethod === 'GET') {
|
elseif ($action === 'app' && isset($_GET['id']) && is_numeric($_GET['id']) && $requestMethod === 'GET') {
|
||||||
$appId = $_GET['id'];
|
$appId = $_GET['id'];
|
||||||
error_log("Requesting app details for ID: $appId");
|
error_log("Requesting app details for ID: $appId");
|
||||||
|
|||||||
Reference in New Issue
Block a user