16 KiB
16 KiB
玩Android 开放API 完整整理(Markdown版)
Base URL:https://www.wanandroid.com
通用返回格式:所有接口统一返回如下结构,errorCode为核心判断依据
{
"data": Object, // 业务数据,接口不同结构不同
"errorCode": 0, // 0=成功 / -1=普通错误 / -1001=登录失效
"errorMsg": "" // 错误信息,errorCode非0时非空
}
开发通用注意:
-
页码:早期接口从0开始,后期从1开始,按各接口说明遵循;
-
分页:支持
page_size(取值1-40),一旦传入后续分页必须携带,否则读取错误; -
登录态:需登录接口依赖Cookie持久化,登录后服务端返回Cookie,客户端存储即可;
-
空值处理:除标题、链接外,其他字段均可能为null,App需做兼容;
-
POST接口:建议先通过Postman模拟调试,再接入代码。
一、2024-05-26 新增API
| 接口名称 | 接口地址 | 请求方式 | 请求参数 | 成功响应体示例 | 核心说明 |
|---|---|---|---|---|---|
| 鸿蒙专栏 | /harmony/index/json |
GET | 无 | json { "data": { "links": {}, "open_sources": {}, "tools": {} }, "errorCode": 0, "errorMsg": "" } |
返常用链接/开源/工具,复用Chapter/Article Bean |
| 首页热门-问答 | /popular/wenda/json |
GET | 无 | 复用Chapter Bean结构,errorCode=0,data为问答列表 | 首页最受欢迎问答板块 |
| 首页热门-专栏 | /popular/column/json |
GET | 无 | 复用Chapter Bean结构,errorCode=0,data为专栏列表 | 首页最受欢迎专栏板块 |
| 首页热门-路线 | /popular/route/json |
GET | 无 | 复用Chapter Bean结构,errorCode=0,data为学习路线列表 | 首页最受欢迎学习路线 |
二、首页相关API
| 接口名称 | 接口地址 | 请求方式 | 请求参数 | 成功响应体核心说明/示例 | 核心说明 |
|---|---|---|---|---|---|
| 首页文章列表 | /article/list/{页码}/json |
GET | 路径参数:页码(从0开始) 可选参数:page_size=1-40 |
data含文章列表,区分author(作者)/shareUser(分享人,此时author为null),示例:json { "data": { "curPage":1, "datas": [{ "title":"xxx", "author":"xxx", "shareUser":null }] }, "errorCode":0, "errorMsg":"" } |
支持分页,注意superChapterId为一级分类第一个子类id |
| 首页Banner | /banner/json |
GET | 无 | data为Banner数组,含id/title/url/imagePath等字段 |
首页轮播图数据 |
| 常用网站 | /friend/json |
GET | 无 | data为网站数组,含id/name/link/desc等字段 |
开发常用网站导航 |
| 搜索热词 | /hotkey/json |
GET | 无 | data为热词数组,含id/name字段(name为搜索关键词) |
当前搜索量最高的关键词列表 |
| 置顶文章 | /article/top/json |
GET | 无 | data为置顶文章数组,结构同首页文章列表 | 首页所有置顶文章 |
三、体系相关API(知识分类)
| 接口名称 | 接口地址 | 请求方式 | 请求参数 | 成功响应体核心说明/示例 | 核心说明 |
|---|---|---|---|---|---|
| 体系数据 | /tree/json |
GET | 无 | data为二级体系数组,含一级分类id/name+二级子分类children(子分类含id/name),示例见文档 |
返回知识体系二级结构,子分类id用于查文章 |
| 体系下的文章 | /article/list/{页码}/json |
GET | 路径参数:页码(从0开始) 查询参数:cid=二级分类id 可选:page_size=1-40 |
data为文章列表,结构同首页文章列表 | 按知识分类查文章,cid为体系数据返回的二级id |
| 按作者搜文章 | /article/list/{页码}/json |
GET | 路径参数:页码(从0开始) 查询参数:author=作者昵称 可选:page_size=1-40 |
data为该作者的文章列表,结构同首页文章列表 | author为精确昵称,不支持模糊匹配 |
四、导航相关API
| 接口名称 | 接口地址 | 请求方式 | 请求参数 | 成功响应体核心说明/示例 | 核心说明 |
|---|---|---|---|---|---|
| 导航数据 | /navi/json |
GET | 无 | data为导航分类数组,含id/name/articles(articles为对应链接列表) |
开发导航分类及对应链接,含分类+子链接 |
五、项目相关API
| 接口名称 | 接口地址 | 请求方式 | 请求参数 | 成功响应体核心说明/示例 | 核心说明 |
|---|---|---|---|---|---|
| 项目分类 | /project/tree/json |
GET | 无 | data为项目分类数组,含id/name(id为分类唯一标识),示例见文档 |
返回所有项目分类,分类id用于查对应项目列表 |
| 项目列表 | /project/list/{页码}/json |
GET | 路径参数:页码(从1开始) 查询参数:cid=分类id 可选:page_size=1-40 |
data为项目列表,含id/title/desc/projectLink/envelopePic等项目信息 |
按分类查项目,页码从1开始(区别于文章接口) |
六、登录/注册/退出API
| 接口名称 | 接口地址 | 请求方式 | 请求参数(POST Body/GET) | 成功响应体示例 | 失败响应体示例(以登录为例) | 核心说明 |
|---|---|---|---|---|---|---|
| 登录 | /user/login |
POST | Body(JSON): { "username": "你的账号", "password": "你的密码" } |
json { "data": null, "errorCode": 0, "errorMsg": "" } |
json { "data": null, "errorCode": -1, "errorMsg": "账号或密码错误" } |
登录后服务端返回Cookie,客户端需持久化存储 |
| 注册 | /user/register |
POST | Body(JSON): { "username": "账号", "password": "密码", "repassword": "确认密码" } |
json { "data": null, "errorCode": 0, "errorMsg": "" } |
json { "data": null, "errorCode": -1, "errorMsg": "用户名已存在" } |
三次参数均为必传,密码需一致 |
| 退出 | /user/logout/json |
GET | 无 | json { "data": null, "errorCode": 0, "errorMsg": "" } |
json { "data": null, "errorCode": -1001, "errorMsg": "未登录" } |
服务端设置Cookie Max-Age=0,客户端需清理本地账号密码 |
七、收藏相关API(均需登录,Cookie持久化)
| 接口名称 | 接口地址 | 请求方式 | 请求参数(POST Body/GET) | 成功响应体示例 | 核心说明 |
|---|---|---|---|---|---|
| 收藏文章列表 | /lg/collect/list/{页码}/json |
GET | 路径参数:页码(从0开始) 可选:page_size=1-40 |
data为收藏文章列表,含收藏id、原文章信息等 | 分页查询自己收藏的所有站内/站外文章 |
| 收藏站内文章 | /lg/collect/{文章id}/json |
POST | 路径参数:文章id(站内文章原始id) Body:无 |
json { "data": null, "errorCode": 0, "errorMsg": "" } |
直接通过文章id收藏站内文章 |
| 收藏站外文章 | /lg/collect/add/json |
POST | Body(JSON): { "title": "文章标题", "author": "作者", "link": "文章外链" } |
json { "data": null, "errorCode": 0, "errorMsg": "" } |
手动添加站外文章到收藏,三个参数均为必传 |
| 编辑收藏文章 | /lg/collect/user_article/update/{文章id}/json |
POST | 路径参数:文章id(收藏的文章id) Body(JSON): { "title": "新标题", "author": "新作者", "link": "新链接" } |
json { "data": null, "errorCode": 0, "errorMsg": "" } |
必须传全三个参数,否则会将对应字段置空 |
| 取消收藏(文章列表) | /lg/uncollect_originId/{文章id}/json |
POST | 路径参数:文章id(列表中原始文章id) Body:无 |
json { "data": null, "errorCode": 0, "errorMsg": "" } |
从文章列表页取消收藏时使用 |
| 取消收藏(我的收藏页) | /lg/uncollect/{收藏id}/json |
POST | 路径参数:收藏id(收藏列表的id) Body(JSON): { "originId": 原文章id(无则为-1)} |
json { "data": null, "errorCode": 0, "errorMsg": "" } |
从我的收藏页取消收藏时使用,originId为原文章id,无则传-1 |
| 收藏网站列表 | /lg/collect/usertools/json |
GET | 无 | data为收藏网站数组,含id/name/link等字段 |
查询自己收藏的开发网站 |
| 收藏网址 | /lg/collect/addtool/json |
POST | Body(JSON): { "name": "网站名称", "link": "网站链接" } |
json { "data": null, "errorCode": 0, "errorMsg": "" } |
添加开发网站到收藏,两个参数均为必传 |
| 编辑收藏网站 | /lg/collect/updatetool/json |
POST | Body(JSON): { "id": 收藏网站id, "name": "新名称", "link": "新链接" } |
json { "data": null, "errorCode": 0, "errorMsg": "" } |
编辑收藏的网站,id为必传,用于定位修改对象 |
| 删除收藏网站 | /lg/collect/deletetool/json |
POST | Body(JSON): { "id": 收藏网站id } |
json { "data": null, "errorCode": 0, "errorMsg": "" } |
根据收藏网站id删除对应记录 |
八、搜索API
| 接口名称 | 接口地址 | 请求方式 | 请求参数 | 成功响应体核心说明/示例 | 核心说明 |
|---|---|---|---|---|---|
| 文章搜索 | /article/query/{页码}/json |
POST | 路径参数:页码(从0开始) Body(JSON): { "k": "搜索关键词" } 可选:page_size=1-40 |
data为搜索结果文章列表,结构同首页文章列表 | 支持多关键词,用空格分隔(如k: "Android Java") |
九、积分相关API
| 接口名称 | 接口地址 | 请求方式 | 请求参数 | 成功响应体示例/核心说明 | 核心说明 |
|---|---|---|---|---|---|
| 积分排行榜 | /coin/rank/{页码}/json |
GET | 路径参数:页码(从1开始) 可选:page_size=1-40 |
data为排行榜列表,含用户id/name/coinCount(积分)/rank(排名) |
公开的用户积分排名,无需登录 |
| 个人积分信息 | /lg/coin/userinfo/json |
GET | 无(需登录) | json { "data": { "coinCount": 451, "rank": 7, "userId": 2, "username": "xxx" }, "errorCode": 0, "errorMsg": "" } |
查自己的总积分、当前排名,需登录 |
| 个人积分列表 | /lg/coin/list/{页码}/json |
GET | 路径参数:页码(从1开始) 可选:page_size=1-40(需登录) |
data为积分获取记录列表,含date/desc/coinCount等字段 |
查自己的积分获取历史,需登录 |
十、广场相关API(用户分享)
| 接口名称 | 接口地址 | 请求方式 | 请求参数 | 成功响应体核心说明/示例 | 核心说明 |
|---|---|---|---|---|---|
| 广场文章列表 | /user_article/list/{页码}/json |
GET | 路径参数:页码(从0开始) 可选:page_size=1-40 |
data为广场文章列表,结构同首页文章列表,部分自见文章会被过滤 | 所有用户分享的审核通过文章列表 |
| 分享人文章列表 | /user/{用户id}/share_articles/{页码}/json |
GET | 路径参数:用户id、页码(从1开始) 可选:page_size=1-40 |
data含coinInfo(用户积分信息)+shareArticles(分享文章列表),示例见文档 |
查指定用户的审核通过分享文章,返回该用户积分+文章 |
| 我的分享文章 | /user/lg/private_articles/{页码}/json |
GET | 路径参数:页码(从1开始) 可选:page_size=1-40(需登录) |
data为自己的分享文章列表,含未审核/已审核文章 | 查自己分享的所有文章,需登录 |
| 删除我的分享 | /lg/user_article/delete/{文章id}/json |
POST | 路径参数:文章id(自己分享的文章id) Body:无(需登录) |
json { "data": null, "errorCode": 0, "errorMsg": "" } |
删除自己分享的文章,需登录 |
| 分享文章 | /lg/user_article/add/json |
POST | Body(JSON,需登录): { "title": "文章标题", "link": "文章链接" } |
json { "data": null, "errorCode": 0, "errorMsg": "" } |
分享文章到广场,CSDN/简书等外链直接审核通过,其他仅自己可见 |
十一、问答相关API
| 接口名称 | 接口地址 | 请求方式 | 请求参数 | 成功响应体核心说明/示例 | 核心说明 |
|---|---|---|---|---|---|
| 问答列表 | /wenda/list/{pageId}/json |
GET | 路径参数:pageId(从1开始) 可选:page_size=1-40 |
data为问答列表,含id/title/author/answerCount(回答数)/publishTime等字段 |
全站问答列表,页码从1开始 |
| 问答评论列表 | /wenda/comments/{问答id}/json |
GET | 路径参数:问答id(从问答列表获取) | data为评论列表,含id(评论id,用于回复/删除)/content/author/zanCount等字段 |
默认按点赞倒序,登录后本人评论置顶 |
十二、个人信息API(需登录)
| 接口名称 | 接口地址 | 请求方式 | 请求参数 | 成功响应体示例 | 核心说明 |
|---|---|---|---|---|---|
| 个人信息详情 | /user/lg/userinfo/json |
GET | 无 | 见文档完整示例,含coinInfo(积分/等级/排名)+userInfo(昵称/邮箱/收藏id/用户名等) |
积分排名非实时(每日更新),返回收藏id列表、用户基础信息 |
十三、站内消息API(均需登录)
| 接口名称 | 接口地址 | 请求方式 | 请求参数 | 成功响应体核心说明/示例 | 核心说明 |
|---|---|---|---|---|---|
| 未读消息数量 | /message/lg/count_unread/json |
GET | 无 | data为未读消息数(数字类型),errorCode=0 | 仅返回未读数量,不改变消息状态 |
| 已读消息列表 | /message/lg/readed_list/{页码}/json |
GET | 路径参数:页码(从1开始) 可选:page_size=1-40 |
data为已读消息列表,含消息id/title/content/publishTime等字段 |
分页查询已读消息,需登录 |
| 未读消息列表 | /message/lg/unread_list/{页码}/json |
GET | 路径参数:页码(从1开始) 可选:page_size=1-40 |
data为未读消息列表,结构同已读消息列表 | 访问后所有未读消息标记为已读,勿用于仅查询未读数量,需登录 |
十四、公众号相关API
| 接口名称 | 接口地址 | 请求方式 | 请求参数 | 成功响应体核心说明/示例 | 核心说明 |
|---|---|---|---|---|---|
| 公众号列表 | /wxarticle/chapters/json |
GET | 无 | data为公众号数组,含id/name(id为公众号唯一标识) |
返回收录的所有微信公众号列表 |
| 公众号历史文章 | /wxarticle/list/{公众号id}/{页码}/json |
GET | 路径参数:公众号id、页码(从1开始) 可选:page_size=1-40 |
data为该公众号的历史文章列表,结构同首页文章列表 | 按公众号查历史文章,页码从1开始 |
| 公众号文章搜索 | /wxarticle/list/{公众号id}/{页码}/json |
GET | 路径参数:公众号id、页码(从1开始) 查询参数:k=搜索关键词 可选:page_size=1-40 |
data为该公众号内的搜索结果文章列表,结构同首页文章列表 | 在指定公众号内搜索历史文章,k为搜索关键词 |
十五、最新项目API
| 接口名称 | 接口地址 | 请求方式 | 请求参数 | 成功响应体核心说明/示例 | 核心说明 |
|---|---|---|---|---|---|
| 最新项目列表 | /article/listproject/{页码}/json |
GET | 路径参数:页码(从0开始) 可选:page_size=1-40 |
data为最新项目列表,结构同项目列表接口 | 按时间分页展示所有项目,首页第二个Tab数据,页码从0开始 |
十六、工具/教程相关API
| 接口名称 | 接口地址 | 请求方式 | 请求参数 | 成功响应体核心说明/示例 | 核心说明 |
|---|---|---|---|---|---|
| 开发工具列表 | /tools/list/json |
GET | 无 | data为开发工具数组,含工具名称、链接、说明等字段 | 工具详情页未适配移动端,App展示需注意 |
| 教程列表 | /chapter/547/sublist/json |
GET | 无(547为固定值) | data为教程合集数组,含id/name/author/desc/cover等(id为教程唯一标识),示例见文档 |
返回收录的教程合集(如阮一峰C语言/HTML教程),教程id用于查对应文章 |
| 单个教程文章 | /article/list/{页码}/json |
GET | 路径参数:页码(从0开始) 查询参数:cid=教程id&order_type=1 可选:page_size=1-40 |
data为教程文章列表,结构同首页文章列表,正序展示(保持教程目录结构) | order_type=1强制正序,cid为教程列表返回的id,文章详情页适配移动端 |
十七、待办工具API(TODO)
官方推荐使用 玩Android TODO Open API v2(老接口仍支持,不推荐),所有接口均需登录(Cookie持久化),具体参数/响应体参考官方v2文档,核心说明:
-
支持待办的增、删、改、查、标记完成/未完成;
-
分页规则、返回格式与上述接口保持一致;
-
需注意待办的
type(类型)、status(状态)字段传参规范。
我可以帮你将这份Markdown格式的API列表保存为独立的.md文件,方便你开发时直接下载、复制和查阅,需要吗?
(注:文档部分内容可能由 AI 生成)