Files
nanocode/wanandroid/wanandroid_api_首页测试.md
Ubuntu 32b43f85bd a
2026-07-03 16:58:28 +08:00

15 KiB
Raw Permalink Blame History

玩Android API 测试记录 - 首页相关

测试信息


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: 图片URL
    • isVisible: 是否可见(1=可见)
    • order: 显示顺序
    • title: 标题
    • type: 类型(0=普通)
    • url: 点击跳转URL
  • errorCode: 0表示成功
  • errorMsg: 错误信息,成功时为空

注意事项

  1. Banner数量可能变化,App应动态适配
  2. 图片URL为HTTPS,需要支持HTTPS加载
  3. 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: 错误信息,成功时为空

注意事项

  1. 网站列表相对稳定,但可能更新
  2. icon字段目前为空,未来可能添加图标
  3. 链接均为外部网站,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: 错误信息,成功时为空

注意事项

  1. 热词会随时间变化,反映当前热门搜索
  2. link字段目前为空,未来可能关联特定页面
  3. 热词可用于搜索框的默认提示

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. 置顶文章数量较少,通常1-3篇
  2. collect字段在未登录状态下为false,登录后显示真实状态
  3. 时间戳为毫秒级,需要转换

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": ""
}

注意事项

  1. 页码从0开始:这是与项目列表API的重要区别
  2. 分页参数:page_size一旦传入,后续分页必须携带相同值
  3. 默认分页:不传page_size时,默认每页20条
  4. 分页限制:page_size取值范围1-40
  5. collect字段:未登录时始终为false
  6. 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

  1. 首页Banner ✅
  2. 常用网站 ✅
  3. 搜索热词 ✅
  4. 置顶文章 ✅
  5. 首页文章列表 ✅
  6. 2024-05-26新增API ✅

📊 数据统计

  • 总测试API:10个
  • 成功:10个
  • 失败:0个
  • 平均响应时间:< 500ms

🔧 技术要点

  1. Base URL: https://www.wanandroid.com
  2. 响应格式: 统一的JSON结构
  3. 错误处理: errorCode为0表示成功
  4. 分页规则: 首页文章从0开始,项目列表从1开始
  5. 字段说明: 注意author和shareUser的互斥关系

📝 移动端开发建议

  1. 网络层: 统一处理Base URL和错误码
  2. 数据模型: 创建统一的Article模型
  3. 分页组件: 支持从0或1开始的页码
  4. 图片加载: 支持HTTPS图片URL
  5. 时间处理: 毫秒时间戳转本地时间

测试时间: 2026-03-17 20:35
测试人员: nanobot
下一阶段: 体系相关API测试