# pcf_api_server_demo **Repository Path**: router_gao/pcf_api_server_demo ## Basic Information - **Project Name**: pcf_api_server_demo - **Description**: No description available - **Primary Language**: Python - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-07-07 - **Last Updated**: 2025-07-08 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # PCF API Server Demo 一个简单的PCF(Policy Control Function)API服务器模拟器,用于演示和测试PCF订阅查询功能。 ## 功能特性 - 🚀 轻量级Flask API服务器 - 📱 支持MSISDN查询PCF订阅信息 - 🔄 动态生成测试数据 - 📊 提供健康检查和状态监控 - 🐳 Docker容器化支持 - 🧪 完整的测试套件 ## API端点 ### 主要端点 - `GET /service/user/PcfSubscription?number=` - 查询PCF订阅信息 - `GET /health` - 健康检查 - `GET /` - 服务信息和可用端点 - `GET /msisdns` - 列出可用的MSISDN ### 请求示例 ```bash # 查询PCF订阅信息 curl "http://localhost:1026/service/user/PcfSubscription?number=8613764010195" # 健康检查 curl "http://localhost:1026/health" # 获取服务信息 curl "http://localhost:1026/" ``` ### 响应格式 ```json { "code": 200, "message": "操作成功", "result": { "records": [ { "regPcf": "PCF005UDR001", "subscriberId": "8613764010195", "msisdn": "8613764010195", "status": "Custom1", "paidType": "NULL", "grade": "NULL", "billingCycleDate": "1", "stateOfEmergency": "NotEmergency", "gbrUl": "0", "gbrDl": "0", "packageType": "NULL", "imsi": "460004052635798", "nextResetDateTime": "2025-04-01 00:00:00", "usrLocationIndex": "NULL", "usrImeiList": "NULL", "usr5gStatus": "0", "usrExtensionStatus": "11111111", "usrMultiLocIndex": "NULL", "rawResult": "..." }, { "regPcf": "PCF005UDR001", "serviceName": "22210000300000000000000000001516", "startDate": "2025-03-04 19:04:48", "expiryDate": "2025-05-01 00:00:00", "serviceUsageState": "1", "serviceBillingType": "NULL", "userLocation": "NULL", "userApnOrDnn": "NULL", "serviceAuxiliaryInformation": "NULL", "rawResult": "..." } ], "total": 0, "size": 10, "current": 1, "orders": [], "optimizeCountSql": true, "hitCount": false, "countId": null, "maxLimit": null, "searchCount": true, "pages": 0 } } ``` ## 快速开始 ### 环境要求 - Python 3.7+ - Flask 2.3.3+ - 可选:Docker ### 本地运行 1. 克隆项目 ```bash git clone cd pcf_api_server_demo ``` 2. 安装依赖 ```bash pip install -r requirements.txt ``` 3. 启动服务器 ```bash python app.py ``` 服务器将在 `http://localhost:1026` 启动 ### Docker运行 1. 构建镜像 ```bash docker build -t pcf-api-server . ``` 2. 运行容器 ```bash docker run -p 1026:1026 pcf-api-server ``` 或者使用docker-compose: ```bash docker-compose up ``` ## 测试 ### 运行测试套件 ```bash # Python测试 python test_api.py # Shell测试 chmod +x test.sh ./test.sh ``` ### 手动测试 ```bash # 测试健康检查 curl http://localhost:1026/health # 测试PCF订阅查询 curl "http://localhost:1026/service/user/PcfSubscription?number=8613764010195" # 测试缺少参数 curl http://localhost:1026/service/user/PcfSubscription ``` ## 数据管理 ### 预定义数据 在 `data/` 目录下可以放置预定义的MSISDN数据文件: - 文件名格式:`.json` - 文件内容:PCF订阅记录数组 ### 动态数据生成 对于未预定义的MSISDN,系统会自动生成测试数据,包括: - 订阅者基本信息 - 服务记录 - 原始查询结果 ## 配置 ### 环境变量 - `PORT` - 服务器端口(默认:1026) - `FLASK_ENV` - Flask环境(默认:development) ### 数据目录 - 默认数据目录:`data/` - 可通过修改 `PCFDataLoader` 初始化参数自定义 ## 项目结构 ``` pcf_api_server_demo/ ├── app.py # Flask应用主文件 ├── data_loader.py # PCF数据加载器 ├── requirements.txt # Python依赖 ├── test_api.py # Python测试脚本 ├── test.sh # Shell测试脚本 ├── docker-compose.yml # Docker编排文件 ├── data/ # 预定义数据目录 └── README.md # 项目说明 ``` ## 开发 ### 添加新功能 1. 在 `app.py` 中添加新的路由 2. 在 `data_loader.py` 中添加相应的数据处理逻辑 3. 更新测试脚本 4. 更新文档 ### 自定义数据格式 修改 `PCFDataLoader._generate_demo_data()` 方法来自定义生成的数据格式。 ## 故障排除 ### 常见问题 1. **端口被占用** - 修改 `app.py` 中的端口号 - 或使用环境变量 `PORT` 2. **数据加载失败** - 检查 `data/` 目录权限 - 验证JSON文件格式 3. **测试失败** - 确保服务器正在运行 - 检查端口配置 ### 日志 启用调试模式查看详细日志: ```bash export FLASK_ENV=development python app.py ``` ## 许可证 本项目采用 MIT 许可证 - 详见 [LICENSE](LICENSE) 文件 ## 贡献 欢迎提交 Issue 和 Pull Request! ## 更新日志 ### v1.0.0 - 初始版本 - 支持PCF订阅查询 - 动态数据生成 - 完整的测试套件 - Docker支持