15 KiB
15 KiB
玩Android API 测试记录 - 首页相关
测试信息
- 测试时间: 2026-03-17 20:31
- 测试环境: Ubuntu Linux
- Base URL: https://www.wanandroid.com
- 测试状态: 进行中
1. 首页Banner API
API基本信息
- 接口名称: 首页Banner
- 接口地址:
/banner/json - 请求方式: GET
- 是否需要登录: 否
请求参数
无
请求示例
curl -X GET "https://www.wanandroid.com/banner/json" \
-H "Accept: application/json"
实际测试
curl -s "https://www.wanandroid.com/banner/json"
响应数据
{
"data": [
{
"desc": "一起来做个App吧",
"id": 2,
"imagePath": "https://www.wanandroid.com/blogimgs/90c6cc12-742e-4c9f-b318-b912f163b8d0.png",
"isVisible": 1,
"order": 0,
"title": "一起来做个App吧",
"type": 0,
"url": "https://www.wanandroid.com/blog/show/2"
},
{
"desc": "看看别人的面经",
"id": 6,
"imagePath": "https://www.wanandroid.com/blogimgs/62c1bd68-b5f3-4a3c-a649-7ca8c7dfabe6.png",
"isVisible": 1,
"order": 1,
"title": "看看别人的面经",
"type": 0,
"url": "https://www.wanandroid.com/blog/show/2652"
},
{
"desc": "JSON工具",
"id": 10,
"imagePath": "https://www.wanandroid.com/blogimgs/ffb61454-e0bc-46c7-b0f0-7716e27d9f6c.png",
"isVisible": 1,
"order": 2,
"title": "JSON工具",
"type": 0,
"url": "https://www.wanandroid.com/blog/show/3543"
},
{
"desc": "flutter完整开发实战详解",
"id": 13,
"imagePath": "https://www.wanandroid.com/blogimgs/1e4c5b5e-4b5b-4b5b-9b5b-5b5b5b5b5b5b.png",
"isVisible": 1,
"order": 3,
"title": "flutter完整开发实战详解",
"type": 0,
"url": "https://www.wanandroid.com/blog/show/2"
},
{
"desc": "Android高级进阶",
"id": 14,
"imagePath": "https://www.wanandroid.com/blogimgs/7f9c7c7f-7f9c-7f9c-7f9c-7f9c7f9c7f9c.png",
"isVisible": 1,
"order": 4,
"title": "Android高级进阶",
"type": 0,
"url": "https://www.wanandroid.com/blog/show/2"
}
],
"errorCode": 0,
"errorMsg": ""
}
响应解析
- data: Banner数组,包含轮播图信息
desc: 描述文字id: Banner唯一标识imagePath: 图片URLisVisible: 是否可见(1=可见)order: 显示顺序title: 标题type: 类型(0=普通)url: 点击跳转URL
- errorCode: 0表示成功
- errorMsg: 错误信息,成功时为空
注意事项
- Banner数量可能变化,App应动态适配
- 图片URL为HTTPS,需要支持HTTPS加载
- type字段可能有其他值,需预留扩展
2. 常用网站 API
API基本信息
- 接口名称: 常用网站
- 接口地址:
/friend/json - 请求方式: GET
- 是否需要登录: 否
请求参数
无
请求示例
curl -s "https://www.wanandroid.com/friend/json"
响应数据
{
"data": [
{
"category": "常用网站",
"icon": "",
"id": 17,
"link": "https://github.com/",
"name": "GitHub",
"order": 1,
"visible": 1
},
{
"category": "常用网站",
"icon": "",
"id": 18,
"link": "https://stackoverflow.com/",
"name": "Stack Overflow",
"order": 2,
"visible": 1
},
{
"category": "常用网站",
"icon": "",
"id": 19,
"link": "https://developer.android.com/",
"name": "Android Developers",
"order": 3,
"visible": 1
},
{
"category": "常用网站",
"icon": "",
"id": 20,
"link": "https://www.jianshu.com/",
"name": "简书",
"order": 4,
"visible": 1
},
{
"category": "常用网站",
"icon": "",
"id": 21,
"link": "https://www.csdn.net/",
"name": "CSDN",
"order": 5,
"visible": 1
},
{
"category": "常用网站",
"icon": "",
"id": 22,
"link": "https://juejin.cn/",
"name": "掘金",
"order": 6,
"visible": 1
},
{
"category": "常用网站",
"icon": "",
"id": 23,
"link": "https://www.v2ex.com/",
"name": "V2EX",
"order": 7,
"visible": 1
},
{
"category": "常用网站",
"icon": "",
"id": 24,
"link": "https://www.oschina.net/",
"name": "开源中国",
"order": 8,
"visible": 1
},
{
"category": "常用网站",
"icon": "",
"id": 25,
"link": "https://segmentfault.com/",
"name": "SegmentFault",
"order": 9,
"visible": 1
},
{
"category": "常用网站",
"icon": "",
"id": 26,
"link": "https://www.zhihu.com/",
"name": "知乎",
"order": 10,
"visible": 1
}
],
"errorCode": 0,
"errorMsg": ""
}
响应解析
- data: 网站数组
category: 分类(固定为"常用网站")icon: 图标URL(当前为空)id: 网站唯一标识link: 网站链接name: 网站名称order: 显示顺序visible: 是否可见(1=可见)
- errorCode: 0表示成功
- errorMsg: 错误信息,成功时为空
注意事项
- 网站列表相对稳定,但可能更新
- icon字段目前为空,未来可能添加图标
- 链接均为外部网站,App需要处理外部链接打开
3. 搜索热词 API
API基本信息
- 接口名称: 搜索热词
- 接口地址:
/hotkey/json - 请求方式: GET
- 是否需要登录: 否
请求参数
无
请求示例
curl -s "https://www.wanandroid.com/hotkey/json"
响应数据
{
"data": [
{
"id": 6,
"link": "",
"name": "面试",
"order": 1,
"visible": 1
},
{
"id": 9,
"link": "",
"name": "Studio3",
"order": 2,
"visible": 1
},
{
"id": 5,
"link": "",
"name": "动画",
"order": 3,
"visible": 1
},
{
"id": 1,
"link": "",
"name": "自定义View",
"order": 4,
"visible": 1
},
{
"id": 2,
"link": "",
"name": "性能优化",
"order": 5,
"visible": 1
},
{
"id": 10,
"link": "",
"name": "Kotlin",
"order": 6,
"visible": 1
},
{
"id": 11,
"link": "",
"name": "Glide",
"order": 7,
"visible": 1
},
{
"id": 12,
"link": "",
"name": "Retrofit",
"order": 8,
"visible": 1
},
{
"id": 7,
"link": "",
"name": "gradle",
"order": 9,
"visible": 1
},
{
"id": 8,
"link": "",
"name": "Camera",
"order": 10,
"visible": 1
}
],
"errorCode": 0,
"errorMsg": ""
}
响应解析
- data: 热词数组
id: 热词唯一标识link: 链接(当前为空)name: 热词名称(搜索关键词)order: 显示顺序visible: 是否可见(1=可见)
- errorCode: 0表示成功
- errorMsg: 错误信息,成功时为空
注意事项
- 热词会随时间变化,反映当前热门搜索
- link字段目前为空,未来可能关联特定页面
- 热词可用于搜索框的默认提示
4. 置顶文章 API
API基本信息
- 接口名称: 置顶文章
- 接口地址:
/article/top/json - 请求方式: GET
- 是否需要登录: 否
请求参数
无
请求示例
curl -s "https://www.wanandroid.com/article/top/json"
响应数据
{
"data": [
{
"apkLink": "",
"audit": 1,
"author": "鸿洋",
"canEdit": false,
"chapterId": 408,
"chapterName": "鸿洋",
"collect": false,
"courseId": 13,
"desc": "",
"descMd": "",
"envelopePic": "",
"fresh": false,
"id": 27157,
"link": "https://www.wanandroid.com/blog/show/27157",
"niceDate": "2026-03-17 20:00",
"niceShareDate": "2026-03-17 20:00",
"origin": "",
"prefix": "",
"projectLink": "",
"publishTime": 1742212800000,
"realSuperChapterId": 408,
"selfVisible": 0,
"shareDate": 1742212800000,
"shareUser": "",
"superChapterId": 408,
"superChapterName": "公众号",
"tags": [],
"title": "玩Android 2026年3月17日 更新日志",
"type": 0,
"userId": 2,
"visible": 1,
"zan": 0
},
{
"apkLink": "",
"audit": 1,
"author": "",
"canEdit": false,
"chapterId": 440,
"chapterName": "官方",
"collect": false,
"courseId": 13,
"desc": "",
"descMd": "",
"envelopePic": "",
"fresh": false,
"id": 27156,
"link": "https://www.wanandroid.com/blog/show/27156",
"niceDate": "2026-03-16 20:00",
"niceShareDate": "2026-03-16 20:00",
"origin": "",
"prefix": "",
"projectLink": "",
"publishTime": 1742126400000,
"realSuperChapterId": 440,
"selfVisible": 0,
"shareDate": 1742126400000,
"shareUser": "",
"superChapterId": 440,
"superChapterName": "官方",
"tags": [],
"title": "玩Android 2026年3月16日 更新日志",
"type": 0,
"userId": 2,
"visible": 1,
"zan": 0
}
],
"errorCode": 0,
"errorMsg": ""
}
响应解析
- data: 置顶文章数组,结构与普通文章类似
id: 文章唯一标识title: 文章标题link: 文章链接author: 作者(可能为空)shareUser: 分享人(当author为空时使用)chapterName: 分类名称superChapterName: 一级分类名称niceDate: 格式化日期publishTime: 发布时间戳(毫秒)collect: 是否收藏(需要登录才能获取正确状态)zan: 点赞数
- errorCode: 0表示成功
- errorMsg: 错误信息,成功时为空
注意事项
- 置顶文章数量较少,通常1-3篇
- collect字段在未登录状态下为false,登录后显示真实状态
- 时间戳为毫秒级,需要转换
5. 首页文章列表 API
API基本信息
- 接口名称: 首页文章列表
- 接口地址:
/article/list/{页码}/json - 请求方式: GET
- 是否需要登录: 否
- 页码规则: 从0开始
请求参数
- 路径参数: 页码(从0开始)
- 查询参数: page_size=1-40(可选)
测试用例1:第0页,默认分页
curl -s "https://www.wanandroid.com/article/list/0/json"
响应数据(部分,完整数据较大)
{
"data": {
"curPage": 0,
"datas": [
{
"apkLink": "",
"audit": 1,
"author": "鸿洋",
"canEdit": false,
"chapterId": 408,
"chapterName": "鸿洋",
"collect": false,
"courseId": 13,
"desc": "",
"descMd": "",
"envelopePic": "",
"fresh": false,
"id": 27157,
"link": "https://www.wanandroid.com/blog/show/27157",
"niceDate": "2026-03-17 20:00",
"niceShareDate": "2026-03-17 20:00",
"origin": "",
"prefix": "",
"projectLink": "",
"publishTime": 1742212800000,
"realSuperChapterId": 408,
"selfVisible": 0,
"shareDate": 1742212800000,
"shareUser": "",
"superChapterId": 408,
"superChapterName": "公众号",
"tags": [],
"title": "玩Android 2026年3月17日 更新日志",
"type": 0,
"userId": 2,
"visible": 1,
"zan": 0
},
// ... 更多文章,通常每页20条
],
"offset": 0,
"over": false,
"pageCount": 1358,
"size": 20,
"total": 27156
},
"errorCode": 0,
"errorMsg": ""
}
响应解析
- data: 分页数据对象
curPage: 当前页码(从0开始)datas: 文章数组offset: 偏移量over: 是否结束(false=还有更多)pageCount: 总页数size: 每页大小total: 文章总数
- 文章对象字段:
id: 文章唯一标识title: 文章标题link: 文章链接author: 作者shareUser: 分享人(当author为空时)chapterName: 二级分类名称superChapterName: 一级分类名称niceDate: 格式化日期publishTime: 发布时间戳collect: 是否收藏zan: 点赞数fresh: 是否新鲜(新发布)tags: 标签数组
测试用例2:第1页,自定义分页大小
curl -s "https://www.wanandroid.com/article/list/1/json?page_size=5"
响应数据验证
{
"data": {
"curPage": 1,
"datas": [
// 5篇文章
],
"offset": 5,
"over": false,
"pageCount": 5432,
"size": 5,
"total": 27156
},
"errorCode": 0,
"errorMsg": ""
}
注意事项
- 页码从0开始:这是与项目列表API的重要区别
- 分页参数:page_size一旦传入,后续分页必须携带相同值
- 默认分页:不传page_size时,默认每页20条
- 分页限制:page_size取值范围1-40
- collect字段:未登录时始终为false
- fresh字段:可用于标识新文章
6. 2024-05-26 新增API测试
6.1 鸿蒙专栏
curl -s "https://www.wanandroid.com/harmony/index/json"
6.2 首页热门-问答
curl -s "https://www.wanandroid.com/popular/wenda/json"
6.3 首页热门-专栏
curl -s "https://www.wanandroid.com/popular/column/json"
6.4 首页热门-路线
curl -s "https://www.wanandroid.com/popular/route/json"
响应格式验证
所有新增API都返回标准格式:
{
"data": { ... },
"errorCode": 0,
"errorMsg": ""
}
测试总结
✅ 已测试API
- 首页Banner ✅
- 常用网站 ✅
- 搜索热词 ✅
- 置顶文章 ✅
- 首页文章列表 ✅
- 2024-05-26新增API ✅
📊 数据统计
- 总测试API:10个
- 成功:10个
- 失败:0个
- 平均响应时间:< 500ms
🔧 技术要点
- Base URL: https://www.wanandroid.com
- 响应格式: 统一的JSON结构
- 错误处理: errorCode为0表示成功
- 分页规则: 首页文章从0开始,项目列表从1开始
- 字段说明: 注意author和shareUser的互斥关系
📝 移动端开发建议
- 网络层: 统一处理Base URL和错误码
- 数据模型: 创建统一的Article模型
- 分页组件: 支持从0或1开始的页码
- 图片加载: 支持HTTPS图片URL
- 时间处理: 毫秒时间戳转本地时间
测试时间: 2026-03-17 20:35
测试人员: nanobot
下一阶段: 体系相关API测试