登录

去注册

登录

注册

去登录

注册

玩Android 开放API

xiaoyang   2017-12-11   收藏

由于早期开放的一些API页码为0开始,后期接口修改为从1开始,为了兼顾之前的开放API,故无法统一。

对于POST接口建议使用postman模拟

在编写过程中如果遇到一些问题,也有一些参考项目,这里针对Java和Kotlin各自选择了一款:

开源项目或多或少包含一些问题,仅供参考,最好自己写一个啦~
如果你想装一个使用,建议下载kotlin那个版本,我一直在使用,较为稳定。

当然你也可以在github上搜索wanandroid

返回数据结构定义:

{
    "data": ...,
    "errorCode": 0,
    "errorMsg": ""
}

所有的返回结构均为上述,其中errorCode如果为负数则认为错误,此时errorMsg会包含错误信息。data为Object,返回数据根据不同的接口而变化。

如果遇到接口错误,请及时通过https://github.com/hongyangAndroid/wanandroid反馈。

对于需要登录访问的接口,强烈建议阅读下:

1.首页相关

1.1 首页文章列表

http://www.wanandroid.com/article/list/0/json

方法:GET
参数:页码,拼接在连接中,从0开始。

可直接点击查看示例:http://www.wanandroid.com/article/list/1/json

注意:页码从0开始,拼接在链接上。

其中有两个易混淆的字段:

"superChapterId": 153, 
"superChapterName": "framework", // 一级分类的名称

superChapterId其实不是一级分类id,因为要拼接跳转url,内容实际都挂在二级分类下,所以该id实际上是一级分类的第一个子类目的id,拼接后故可正常跳转。

1.2 首页banner

http://www.wanandroid.com/banner/json

方法:GET
参数:无

可直接点击查看示例:http://www.wanandroid.com/banner/json

1.3 常用网站

http://www.wanandroid.com/friend/json

方法:GET
参数:无

可直接点击查看示例:http://www.wanandroid.com/friend/json

1.4 搜索热词

即目前搜索最多的关键词。

http://www.wanandroid.com//hotkey/json

方法:GET
参数:无

可直接点击查看示例:http://www.wanandroid.com/hotkey/json

2. 体系

2.1 体系数据

http://www.wanandroid.com/tree/json

方法:GET
参数:无

可直接点击查看示例:http://www.wanandroid.com/tree/json

主要标识的网站内容的体系结构,二级目录。部分数据参考:

{
    "children": [
        {
            "children": [],
            "courseId": 13,
            "id": 60, // id会在查看该目录下所有文章时有用
            "name": "Android Studio相关", // 子名称
            "order": 1000,
            "parentChapterId": 150,
            "visible": 1
        },...
    ],
    "courseId": 13,
    "id": 150,
    "name": "开发环境", // 一级的名称
    "order": 1,
    "parentChapterId": 0,
    "visible": 1
}

2.2 知识体系下的文章

http://www.wanandroid.com/article/list/0/json?cid=60

方法:GET
参数:
	cid 分类的id,上述二级目录的id
	页码:拼接在链接上,从0开始。

例如查看类别:Android Studio下所有的文章:http://www.wanandroid.com/article/list/0/json?cid=60

3. 导航

3.1 导航数据

http://www.wanandroid.com/navi/json

方法:GET
参数:无

可直接点击查看示例:http://www.wanandroid.com/navi/json

4. 项目

4.1 项目分类

http://www.wanandroid.com/project/tree/json

方法: GET
参数: 无

项目为包含一个分类,该接口返回整个分类。

[
    {
        "children": [],
        "courseId": 13, 
        "id": 294, // 该id在获取该分类下项目时需要用到
        "name": "完整项目", // 该分类名称
        "order": 145000,
        "parentChapterId": 293,
        "visible": 0
    }
]

可以直接访问:http://www.wanandroid.com/project/tree/json

4.2 项目列表数据

某一个分类下项目列表数据,分页展示

http://www.wanandroid.com/project/list/1/json?cid=294

方法:GET
参数:
	cid 分类的id,上面项目分类接口
	页码:拼接在链接中,从1开始。

可以直接访问:http://www.wanandroid.com/project/list/1/json?cid=294

5. 登录与注册

5.1 登录

http://www.wanandroid.com/user/login

方法:POST
参数:
	username,password

5.2 注册

http://www.wanandroid.com/user/register

方法:POST
参数
	username,password,repassword

登录后会在cookie中返回账号密码,只要在客户端做cookie持久化存储即可自动登录验证。

6. 收藏

注意所有收藏相关都需要登录操作,建议登录将返回的cookie(其中包含账号、密码)持久化到本地即可。

对于需要登录访问的接口,强烈建议阅读下:

6.1 收藏文章列表

http://www.wanandroid.com/lg/collect/list/0/json

方法:GET
参数: 页码:拼接在链接中,从0开始。

在网站上登录后,可以直接访问http://www.wanandroid.com/lg/collect/list/0/json查看自己收藏的文章。

6.2 收藏站内文章

http://www.wanandroid.com/lg/collect/1165/json

方法:POST
参数: 文章id,拼接在链接中。

注意链接中的数字,为需要收藏的id.

6.3 收藏站外文章

http://www.wanandroid.com/lg/collect/add/json

方法:POST
参数:
	title,author,link

6.4 取消收藏

取消收藏一共有两个地方可以触发:

6.4.1 文章列表

http://www.wanandroid.com/lg/uncollect_originId/2333/json

方法:POST
参数:
	id:拼接在链接上

id传入的是列表中文章的id。

image

6.4.2 我的收藏页面(该页面包含自己录入的内容)

http://www.wanandroid.com/lg/uncollect/2805/json

方法:POST
参数:
	id:拼接在链接上
	originId:列表页下发,无则为-1

如下图:id=2766,originId=2324

image

originId 代表的是你收藏之前的那篇文章本身的id; 但是收藏支持主动添加,这种情况下,没有originId则为-1

6.5 收藏网站列表

http://www.wanandroid.com/lg/collect/usertools/json

方法:GET
参数:无

6.6 收藏网址

http://www.wanandroid.com/lg/collect/addtool/json

方法:POST
参数:
	name,link

6.7 编辑收藏网站

http://www.wanandroid.com/lg/collect/updatetool/json

方法:POST
参数:
	id,name,link

6.8 删除收藏网站

http://www.wanandroid.com/lg/collect/deletetool/json

方法:POST
参数:
	id

7. 搜索

7.1 搜索

http://www.wanandroid.com/article/query/0/json

方法:POST
参数:
	页码:拼接在链接上,从0开始。
	k : 搜索关键词

注意:支持多个关键词,用空格隔开

8. TODO 工具

注意所有TODO相关都需要登录操作,建议登录将返回的cookie(其中包含账号、密码)持久化到本地即可。

对于需要登录访问的接口,强烈建议阅读下:

目前Todo分为4类,主要为type区分,type取值为0,1,2,3。

屏幕快照 2018-08-01 下午9.33.42.png

即每天可对应多个todo事件。

对应链接分为别:

  1. http://wanandroid.com/lg/todo/list/0
  2. http://wanandroid.com/lg/todo/list/1
  3. http://wanandroid.com/lg/todo/list/2
  4. http://wanandroid.com/lg/todo/list/3

未来type可能会增加为动态新增的。

8.1 返回列表数据

  1. http://wanandroid.com/lg/todo/list/0/json
  2. http://wanandroid.com/lg/todo/list/1/json
  3. http://wanandroid.com/lg/todo/list/2/json
  4. http://wanandroid.com/lg/todo/list/3/json

返回数据格式:

{
    "data": {
        "doneList": [
            {
                "date": 1532793600000,
                "todoList": [
                    {
                        "completeDate": 1533052800000,
                        "completeDateStr": "2018-08-01",
                        "content": "这里可以记录笔记,备忘信息等。",
                        "date": 1532793600000,
                        "dateStr": "2018-07-29",
                        "id": 82,
                        "status": 1,
                        "title": "已经完成的事情",
                        "type": 0,
                        "userId": 2
                    }
                ]
            }
        ],
        "todoList": [
            {
                "date": 1532016000000,
                "todoList": [
                    {
                        "completeDate": null,
                        "completeDateStr": "",
                        "content": "",
                        "date": 1532016000000,
                        "dateStr": "2018-07-20",
                        "id": 73,
                        "status": 0,
                        "title": "第一件未完成的事情",
                        "type": 0,
                        "userId": 2
                    }
                ]
            },
            {
                "date": 1532448000000,
                "todoList": [
                    {
                        "completeDate": null,
                        "completeDateStr": "",
                        "content": "",
                        "date": 1532448000000,
                        "dateStr": "2018-07-25",
                        "id": 80,
                        "status": 0,
                        "title": "第二件未完成的事情",
                        "type": 0,
                        "userId": 2
                    }
                ]
            }
        ],
        "type": 0
    },
    "errorCode": 0,
    "errorMsg": ""
}
  1. type 为类型
  2. doneList 为已经完成的todo,为列表格式,内部为 时间->List<Todo>这样的格式。
  3. todoList为未完成的todo,格式如上。

8.2 新增一条Todo

http://www.wanandroid.com/lg/todo/add/json

方法:POST
参数:
	title: 新增标题
	content: 新增详情
	date: 2018-08-01
	type: 0

8.3 更新一条Todo内容

http://www.wanandroid.com/lg/todo/update/83/json

方法:POST
参数:
	id: 拼接在链接上,为唯一标识
	title: 更新标题
	content: 新增详情
	date: 2018-08-01
	status: 0 // 0为未完成,1为完成
	type: 0

8.4 删除一条Todo

http://www.wanandroid.com/lg/todo/delete/83/json

方法:POST
参数:
	id: 拼接在链接上,为唯一标识

8.5 仅更新完成状态Todo

http://www.wanandroid.com/lg/todo/done/80/json

方法:POST
参数:
	id: 拼接在链接上,为唯一标识
	status: 0或1,传1代表未完成到已完成,反之则反之。

8.6 未完成 Todo 列表

http://www.wanandroid.com/lg/todo/listnotdo/0/json/1

http://www.wanandroid.com/lg/todo/listnotdo/类型/json/页码

方法:POST
参数:
	类型:类型拼接在链接上,目前支持0,1,2,3
	页码: 拼接在链接上,从1开始;

8.7 已完成 Todo 列表

http://www.wanandroid.com/lg/todo/listdone/0/json/1

http://www.wanandroid.com/lg/todo/listdone/类型/json/页码

方法:POST
参数:
	类型:类型拼接在链接上,目前支持0,1,2,3
	页码: 拼接在链接上,从1开始;