5.2 KiB
5.2 KiB
API接口大全图片方案计划
概述
为API接口大全的桌面端和移动端选择合适的主题封面图片,通过后端数据填充方式实现。
当前状态分析
后端模型
ApiItem已有image_url字段(URLField),用于存储封面图片URLseed_api_directory.py已有部分image_url数据,但使用https://aka.doubaocdn.com/s/...可能不稳定
桌面端(ApiDirectoryDesktop.tsx)
- 已有
getApiImageUrl()函数,支持三级回退:- 优先使用
api.image_url - 其次使用自定义映射(如百度翻译)
- 最后回退到
https://picsum.photos/seed/${api.id}/400/300
- 优先使用
- 使用 Ant Design
<Image>组件渲染封面图,已有fallback属性
移动端(ApiDirectoryMobile.tsx)
- 问题:使用硬编码本地数据,不调用后端API
- 问题:只显示 Ant Design 图标,没有封面图片
- 需要改为API动态获取数据
实施方案
步骤1:更新种子数据(后端)
文件: chunyu_project/apidirectory/management/commands/seed_api_directory.py
为每个API选择合适的Unsplash主题封面图:
| API名称 | 图片主题 | Unsplash图片URL |
|---|---|---|
| 天气查询 | 天空/云层 | https://images.unsplash.com/photo-1504608524841-42fe6f032b4b?w=800&h=600&fit=crop |
| 空气质量指数 | 清新空气/绿色 | https://images.unsplash.com/photo-1441974231531-c6227db76b6e?w=800&h=600&fit=crop |
| IP地址定位 | 地球/网络 | https://images.unsplash.com/photo-1451187580459-43490279c0fa?w=800&h=600&fit=crop |
| 二维码生成 | 科技/数字 | https://images.unsplash.com/photo-1558591710-4b4a1ae0f04d?w=800&h=600&fit=crop |
| 百度翻译 | 语言/交流 | https://images.unsplash.com/photo-1456513080510-7bf3a84b82f8?w=800&h=600&fit=crop |
| 文本比较 | 文档/代码 | https://images.unsplash.com/photo-1518770660439-4636190af475?w=800&h=600&fit=crop |
| 图片压缩 | 图像/照片 | https://images.unsplash.com/photo-1542038784456-1ea8e935640e?w=800&h=600&fit=crop |
| 短链接生成 | 链接/连接 | https://images.unsplash.com/photo-1557682172-298e090bd0f1?w=800&h=600&fit=crop |
步骤2:优化桌面端图片显示
文件: chunyu_project_react/src/pages/ApiDirectory/ApiDirectoryDesktop.tsx
改进 getApiImageUrl() 函数:
- 统一使用高质量图片源
- 添加更完善的错误处理
- 确保回退链可靠
步骤3:移动端改为API动态获取
文件: chunyu_project_react/src/pages/ApiDirectory/ApiDirectoryMobile.tsx
重构移动端组件:
- 移除硬编码本地数据
- 添加API数据获取逻辑(调用
api_request.apidirectory.getItems()) - 添加加载状态和错误处理
- 添加封面图片显示(使用与桌面端一致的图片URL处理逻辑)
- 保持移动端特有的UI风格(卡片式布局)
步骤4:创建图片URL工具函数
文件: chunyu_project_react/src/utils/apiImageUtils.ts
创建统一的图片处理工具:
getApiImageUrl(api: ApiItem): string- 获取API封面图URLgetFallbackImageUrl(id: number): string- 获取备用图片URL- 统一桌面端和移动端的图片处理逻辑
步骤5:更新CSS样式
文件:
chunyu_project_react/src/pages/ApiDirectory/ApiDirectoryDesktop.csschunyu_project_react/src/pages/ApiDirectory/ApiDirectoryMobile.css
确保图片显示效果:
- 图片加载中的占位符样式
- 图片加载失败的默认背景
- 移动端图片圆角和阴影效果
验证步骤
- 后端验证:运行
python manage.py seed_api_directory更新数据 - 桌面端验证:访问
/api桌面端,检查每个API卡片是否显示正确的封面图 - 移动端验证:访问
/api移动端,检查:- 数据是否从API动态获取
- 封面图片是否正确显示
- 加载状态和错误处理是否正常
- 图片回退验证:临时修改某个API的
image_url为无效URL,验证回退机制是否生效 - 响应式验证:在不同屏幕尺寸下测试图片显示效果
文件清单
| 文件路径 | 操作 | 说明 |
|---|---|---|
chunyu_project/apidirectory/management/commands/seed_api_directory.py |
修改 | 更新image_url为Unsplash图片 |
chunyu_project_react/src/utils/apiImageUtils.ts |
新建 | 图片URL工具函数 |
chunyu_project_react/src/pages/ApiDirectory/ApiDirectoryDesktop.tsx |
修改 | 使用统一图片工具函数 |
chunyu_project_react/src/pages/ApiDirectory/ApiDirectoryMobile.tsx |
重构 | 改为API动态获取+图片显示 |
chunyu_project_react/src/pages/ApiDirectory/ApiDirectoryDesktop.css |
修改 | 优化图片样式 |
chunyu_project_react/src/pages/ApiDirectory/ApiDirectoryMobile.css |
修改 | 添加图片样式 |
假设与决策
- 图片来源:使用 Unsplash 免费图床,图片URL格式为
https://images.unsplash.com/photo-{id}?w=800&h=600&fit=crop - 图片尺寸:统一使用 800x600 尺寸,适配大多数卡片布局
- 回退策略:图片加载失败时,使用
picsum.photos的 seed 图片(基于API ID确保一致性) - 移动端数据:完全移除硬编码数据,统一使用后端API