0x00:序言

Two strangers fell in love,

Only one knows it wasn’t by chance.

To the searching tags, you may well fall in love with http:// 10.2.26.67

Github地址:Beta阶段前后端接口定义说明.md

版本管理

修改记录

V1.0

Beta阶段前后端接口文档一稿整理完成,记录用户、标签(含推荐)、搜索和问答部分的主要接口

0x01 :接口定义说明

接口定义描述

具体样例说明

Particular Scopes(URL):通过URL描述基本的属性或关系

ü  /users/{id}/notifications

ü  /question/add

Methods(HTTPS Protocol):描述服务器的交互方法

ü  GET, POST, PUT, DELETE

Arguments(Requires):API本身所需的参数

ü  private_information

ü  write/read_access

Return:API本身返回的文本返回值

ü  {"body":,"is_unrea":,"post_id":}

 

特别说明:Django框架依据cookies来管理用户状态,因此对于Android端的前端开发的团队(Dream:http://www.cnblogs.com/groupofdream/),必须启用cookies进行管理;经过调研,Android能够依据HttpClient自动管理cookies,再查阅调研后,将有效提升前端本身的开发效率

0x02 :用户管理说明

 

0x0200:用户登录

URL

/accounts/login

Method

POST

Argument

ü  username 用户名

ü  password 密码

Return

ü  成功时 {"state":"ok"}

ü  密码错误时 {"state":"failed"}

ü  无此用户时 {"state":"missing"}

0x0204:用户注销

URL

/accounts/logout

Method

POST

Argument

——

Return

ü  成功时 {"state":"ok"}

ü  失败时 {"state":"failed"}

0x0208:设定用户信息Login Required

URL

/accounts/updateprofile

Method

POST

Argument

ü  email 邮件地址

ü  realname 真实姓名

ü  description 一句话自我介绍

Return

ü  成功时 {"state":"ok"}

ü  失败时 {"state":"failed"}

0x020c:获取用户信息Login Required

URL

/accounts/userinfo

Method

GET

Argument

——

Return

ü  成功时

{"state":"ok",

        "email":"example@example.com",

        "creation_time":UNIXTimestamp,

        "realname":"example_real_name",

        "description":"I'm a example",

        "credit":123,

        "forgottime":UNIXTimestamp,

        "download":123}

ü  失败时 {"state":"failed"}

0x03:标签(TAG)管理说明

0x0300:关注TAGLogin Required

URL

/accounts/liketag

Method

GET

Argument

ü  tag 标签名

Return

ü  成功时

{

      "state":"ok",

      "tags": [

        {

          "tagname":"name1",

          "count": 123,

          "excerpt": "name1 is a balabala..."

        }

        {

          "tagname":"name2",

          "count": 222,

          "excerpt": "name2 is a balabala..."

        }

      ]

}

失败时 {"state":"failed"}

0x0304:取消关注TAGLogin Required

URL

/accounts/disliketag

Method

GET

Argument

ü  tag 标签名

Return

ü  成功时

{

      "state":"ok",

      "tags": [

        {

          "tagname":"name1",

          "count": 123,

          "excerpt": "name1 is a balabala..."

        }

        {

          "tagname":"name2",

          "count": 222,

          "excerpt": "name2 is a balabala..."

        }

      ]

}

失败时 {"state":"failed"}

0x0308:获取TAGS

URL

/accounts/tags       {*依据count降序获取标签*}

Method

GET

Argument

Return

ü  成功时

{

      "state":"ok",

      "tags": [

        {

          "tagname":"name1",

          "count": 123,

          "excerpt": "name1 is a balabala..."

        }

        {

          "tagname":"name2",

          "count": 222,

          "excerpt": "name2 is a balabala..."

        }

      ]

    }

ü  失败时 {"state":"failed"}

0x030c:推荐TAGS

URL

/recommended/tags

Method

GET

Argument

Return

ü  成功时

{

      "state":"ok",

      "tags": [

        {

          "tagname":"name1",

          "count": 123,

          "excerpt": "name1 is a balabala..."

        }

        {

          "tagname":"name2",

          "count": 222,

          "excerpt": "name2 is a balabala..."

        }

      ]

      }

ü  失败时 {"state":"failed"}

0x0310:推荐QUESTIONS

URL

/recommended/questions

Method

GET

Argument

Return

ü  成功时

{

      "state":"ok",

      "questions": [

        {

          "question_id":123,

          "title": "my question is a balabala...",

          "content": "hi,..."

          "uid": "user id" //提问者id

          "uname": "user name"//提问者姓名

          "shortAns": "answer is balabala"//问题的简短回答(如果已被选中“最佳答案”)

          "views": 123 //访问数

          "replies": 1 //回复数

          "solved": true //是否已采纳“最佳答案

          "PostDateTime": UNIXTimestamp//提出问题的时间

        },

        ...

      ]

      }

ü  失败时 {"state":"failed"}

0x0314:推荐ANSWERS

URL

/recommended/answers

Method

GET

Argument

Return

ü  成功时

{

      "state":"ok",

      "answers": [

        {

          "question_id":123,

          "answer_id":111,

          "count": 123,

          "content": "hi,...",

          "uid": 66666666,

          "uname": "answer's name",

          "title": "answer title",

          "Qtitle": //该回答所属问题的标题,用于显示“用户回答过的问题”时

          "views": 222,

          "votes": 123,

          "PostDateTime": UNIXTimestamp, //回答问题的时间

          "IsBestAns": true//判断该answer是否是所属问题的最佳answer

        }

      ]

      }

ü  失败时 {"state":"failed"}

0x04:搜索管理说明

URL

/search/query

Method

GET

Argument

ü  query_content 待搜索的内容或tag

Return

ü  成功时

{

      "tag_description":"Java is an object-orinented....",

      "query_content":"Java",

      "question_list":[

        {

          "body":"balabala",

          "creation_date":"2014 Oct",

          "score":44,

          "tags_name":"Java",

          "url":"http://abc",

          "view_count":2,

            ......

        },

 

        {

           ......

        }

      ]

      }

ü  失败时

query_content不在request.GET中,返回{"state":"invalid"},无法获得tag的id:{"state":"failed","query_content":"Java"},计划启用SOLR搜索

0x05:问答管理说明

0x0500:未解决问题

URL

/question/getUnservedQuestions

Method

GET

Argument

ü  tag, //标签名,用于通过标签查询问题(可选,没有的话就随便给一些)

道题)

Return

ü  成功时

{

         "state":"ok",

      "questions": [

        {

          "question_id":123,

          "title": "my question is a balabala...",

          "content": "hi,..."

          "uid": "user id" //提问者id

          "uname": "user name"//提问者姓名

          "shortAns": "answer is balabala"//问题的简短回答(如果已被选中“最佳答案”)

          "views": 123 //访问数

          "replies": 1 //回复数

          "solved": true //是否已采纳“最佳答案

          "PostDateTime": UNIXTimestamp//提出问题的时间

        },

        ...

      ]

}

ü  失败时 {"state":"failed"}

特别说明:用户未登录,最多只返回10道题,若用户已登录,问题数由pageNum或已爬取的问题总数决定。登录与否通过Cookies来判断,利用Django自带的机制即可,无需额外传参

0x0504:热门问题

URL

/question/getHotQuestions

Method

GET

Argument

ü  tag, //标签名,用于通过标签查询问题(可选,没有的话就随便给一些)

道题)

Return

ü  成功时

{

         "state":"ok",

      "questions": [

        {

          "question_id":123,

          "title": "my question is a balabala...",

          "content": "hi,..."

          "uid": "user id" //提问者id

          "uname": "user name"//提问者姓名

          "shortAns": "answer is balabala"//问题的简短回答(如果已被选中“最佳答案”)

          "views": 123 //访问数

          "replies": 1 //回复数

          "solved": true //是否已采纳“最佳答案

          "PostDateTime": UNIXTimestamp//提出问题的时间

        },

        ...

      ]

}

ü  失败时 {"state":"failed"}

0x0508:“我”提出的问题Login Required

URL

/question/getUnservedQuestions

Method

GET

Argument

ü  tag, //标签名,用于通过标签查询问题(可选,没有的话就随便给一些)

道题)

Return

ü  成功时

{

         "state":"ok",

      "questions": [

        {

          "question_id":123,

          "title": "my question is a balabala...",

          "content": "hi,..."

          "uid": "user id" //提问者id

          "uname": "user name"//提问者姓名

          "shortAns": "answer is balabala"//问题的简短回答(如果已被选中“最佳答案”)

          "views": 123 //访问数

          "replies": 1 //回复数

          "solved": true //是否已采纳“最佳答案

          "PostDateTime": UNIXTimestamp//提出问题的时间

        },

        ...

      ]

}

ü  失败时 {"state":"failed"}

0x050c:“我”发表的问题Login Required

URL

/question/getMyAnswers

Method

GET

Argument

ü  uid,

道题)

Return

ü  成功时

{

        "state":"ok",

              "answers": [

        {

          "question_id":123,

          "answer_id":111,

          "count": 123,

          "content": "hi,...",

          "uid": 66666666,

          "uname": "answer's name",

          "title": "answer title",

          "Qtitle": //该回答所属问题的标题,用于显示“用户回答过的问题”时

          "views": 222,

          "votes": 123,

          "PostDateTime": UNIXTimestamp, //回答问题的时间

          "IsBestAns": true//判断该answer是否是所属问题的最佳answer

        }

        ...

      ]

}

ü  失败时 {"state":"failed"}

0x0510:获得某道问题的详细信息

URL

/question/getQuestionById

Method

GET

Argument

ü  question_id      //问题的id

Return

ü  成功时

{

        "state":"ok",

              "question": {

            "question_id":123,

            "title": "my question is a balabala...",

            "content": "hi,..."

            "uid": "user id" //提问者id

            "uname": "user name"//提问者姓名

            "shortAns": "answer is balabala"//问题的简短回答(如果已被选中“最佳答案”)

            "views": 123 //访问数

            "replies": 1 //回复数

            "solved": true //是否已采纳“最佳答案

            "PostDateTime": UNIXTimestamp//提出问题的时间

          },

              "answers": [

          {

            "question_id":123,

            "answer_id":111,

            "count": 123,

            "content": "hi,...",

            "uid": 66666666,

            "uname": "answer's name",

            "title": "answer title",

            "Qtitle": //该回答所属问题的标题,用于显示“用户回答过的问题”时

            "views": 222,

            "votes": 123,

            "PostDateTime": UNIXTimestamp, //回答问题的时间

            "IsBestAns": true//判断该answer是否是所属问题的最佳answer

          }

          ...

        ],

              "tags": [

          {

            "tagname":"name1",

            "count": 123,

            "excerpt": "name1 is a balabala..."

          }

          {

            "tagname":"name2",

            "count": 222,

            "excerpt": "name2 is a balabala..."

          },

          ...

        ]

}

ü  失败时 {"state":"failed"}

0x0514:提问Login Required

URL

/question/addQuestion

Method

GET

Argument

ü  uid,

ü  title,

ü  content,

ü  tags //各个tag用逗号分隔

Return

ü  成功时 {"state":"ok"}

ü  失败时 {"state":"failed"}

0x0518:增加访问数

URL

/question/addView

Method

GET

Argument

ü  question_id      //问题的id

Return

ü  成功时 {"state":"ok"}

ü  失败时 {"state":"failed"}

0x051c:选中最佳答案Login Required

URL

/question/solevdQuestion

Method

GET

Argument

ü  qid //问题的id

ü  aid

Return

ü  成功时 {"state":"ok"}

ü  失败时

{"state":"denied"} // 没权限被拒绝

{"state":"failed"} // 其他原因导致失败

0x0520:点赞Login Required

URL

/question/giveVote

Method

GET

Argument

ü  answer_id

Return

ü  成功时 {"state":"ok"}

ü  失败时 {"state":"failed"}

特别说明:判断用户对该答案是否点过赞,如果点过,赞数减一;如果没点过,赞数加一

0x0524:修改问题Login Required

URL

/question/modifyQuestion

Method

GET

Argument

ü  question_id

ü  title,

ü  content,

ü  tags //各个tag用逗号分隔

Return

ü  成功时 {"state":"ok"}

ü  失败时

{"state":"denied"} // 没权限被拒绝

{"state":"failed"} // 其他原因导致失败

0x0528:删除问题Login Required

URL

/question/deleteQuestion

Method

GET

Argument

ü  question_id,

Return

ü  成功时 {"state":"ok"}

ü  失败时

{"state":"denied"} // 没权限被拒绝

{"state":"failed"} // 其他原因导致失败

0x052c:添加答案Login Required

URL

/question/addAnswer

Method

GET

Argument

ü  qid,

ü  content //答案的内容

Return

ü  成功时 {"state":"ok"}

ü  失败时 {"state":"failed"}

0x0530:删除答案Login Required

URL

/question/deleteAnswer

Method

GET

Argument

ü  answer_id,

Return

ü  成功时 {"state":"ok"}

ü  失败时

{"state":"denied"} // 没权限被拒绝

{"state":"failed"} // 其他原因导致失败

0x0534:修改答案Login Required

URL

/question/modifyAnswer

Method

GET

Argument

ü  answer_id,

Return

ü  成功时 {"state":"ok"}

ü  失败时

{"state":"denied"} // 没权限被拒绝

{"state":"failed"} // 其他原因导致失败

BugPhobia准备篇章:Beta阶段前后端接口文档的更多相关文章

  1. [API]使用Blueprint来高雅的编写接口文档 前后端api文档,移动端api文档

    网址:http://apiary.io/ 介绍:一款非常强大的前后端交互api设计编辑工具(编辑器采用Markdown类似的描述标记,非常高效),高颜值的api文档,还能生成多种语言的测试代码. 中文 ...

  2. vue菜鸟从业记:公司项目里如何进行前后端接口联调

    最近我的朋友王小闰进入一家新的公司,正好公司项目采用的是前后端分离架构,技术栈是王小闰非常熟悉的vue全家桶,后端用的是Java语言. 在前后端开发人员碰面之后,协商确定好了前端需要的数据接口(扯那么 ...

  3. 前后端分离之【接口文档管理及数据模拟工具docdoc与dochelper】

    前后端分离的常见开发方式是: 后端:接收http请求->根据请求url及params处理对应业务逻辑->将处理结果序列化为json返回 前端:发起http请求并传递相关参数->获取返 ...

  4. RAP, 高效前后端联调框架,接口文档管理工具

    RAP通过GUI工具帮助WEB工程师更高效的管理接口文档,同时通过分析接口结构自动生成Mock数据.校验真实接口的正确性,使接口文档成为开发流程中的强依赖.有了结构化的API数据,RAP可以做的更多, ...

  5. SpringBoot集成Swagger(Swagger的使用),生成接口文档,方便前后端分离开发

    首先上一张成果图.  1.Maven依赖 <dependency> <groupId>io.springfox</groupId> <artifactId&g ...

  6. Asp.Net Core 轻松学-利用 Swagger 自动生成接口文档

    前言     目前市场上主流的开发模式,几乎清一色的前后端分离方式,作为服务端开发人员,我们有义务提供给各个客户端良好的开发文档,以方便对接,减少沟通时间,提高开发效率:对于开发人员来说,编写接口文档 ...

  7. Java | Spring Boot Swagger2 集成REST ful API 生成接口文档

      Spring Boot Swagger2 集成REST ful API 生成接口文档 原文 简介 由于Spring Boot 的特性,用来开发 REST ful 变得非常容易,并且结合 Swagg ...

  8. Django框架深入了解_05 (Django中的缓存、Django解决跨域流程(非简单请求,简单请求)、自动生成接口文档)

    一.Django中的缓存: 前戏: 在动态网站中,用户所有的请求,服务器都会去数据库中进行相应的增,删,查,改,渲染模板,执行业务逻辑,最后生成用户看到的页面. 当一个网站的用户访问量很大的时候,每一 ...

  9. Asp.Net Core 轻松学系列-5利用 Swagger 自动生成接口文档

    目录 前言 结语 源码下载 前言     目前市场上主流的开发模式,几乎清一色的前后端分离方式,作为服务端开发人员,我们有义务提供给各个客户端良好的开发文档,以方便对接,减少沟通时间,提高开发效率:对 ...

随机推荐

  1. Linux Shell常用技巧(二)

    七. grep家族:       1.  grep退出状态:    0: 表示成功:    1: 表示在所提供的文件无法找到匹配的pattern:    2: 表示参数中提供的文件不存在.    见如 ...

  2. oracle 数据库更新 新增 修改 删除

    数据增加 INSERT INTO 表名称 [(字段,字段,...)] VALUES (值,值,...) ; 考虑到日后代码的可维护性,一定要使用完整的语法进行数据的增加. 数据修改 UPDATE 表名 ...

  3. iOS开发-Object-C获取手机设备信息(UIDevice)

    一.获取UiDevice设备信息 // 获取设备名称 NSString *name = [[UIDevice currentDevice] name]; // 获取设备系统名称 NSString *s ...

  4. Windows下修改iTunes备份路径

    0.准备工作: 关闭itunes 在任务管理器中杀掉iTunes开头的服务 1,找到iTunes默认备份路径:C:\Users\xxx\AppData\Roaming\Apple Computer\M ...

  5. CATransform3D 使用

    struct CATransform3D { CGFloat m11(x轴缩放), m12(y轴切变), m13, m14(x轴拉伸); CGFloat m21(x轴切变), m22(y轴缩编), m ...

  6. 学习sbtenv

    背景 最近由于工作需要, 我总是在不同的scala项目间流动开发. 这就遇到一个很棘手的问题, 这几个项目用的sbt版本不一致, 老项目用的是 sbt 0.13.15, 新项目用的是 sbt 1.0. ...

  7. mysql 5.7.12 winx64安装配置方法图文教程

    这篇文章主要为大家分享了mysql 5.7.12winx64安装配置方法图文教程,感兴趣的朋友可以参考一下   之前安装mysql时未做总结,换新电脑,补上安装记录,安装的时候,找了些网友的安装记录, ...

  8. 20155211 Exp1 PC平台逆向破解(5)M

    20155211 Exp1 PC平台逆向破解(5)M 实践目标 本次实践的对象是一个名为pwn1的linux可执行文件. 该程序正常执行流程是:main调用foo函数,foo函数会简单回显任何用户输入 ...

  9. Linux下开发python django程序(Session读写)

    1.登陆设置session信息 def loginsession(req): if req.method == 'POST': loginform = LoginForm(req.POST) if l ...

  10. 三层BP神经网络的python实现

    这是一个非常漂亮的三层反向传播神经网络的python实现,下一步我准备试着将其修改为多层BP神经网络. 下面是运行演示函数的截图,你会发现预测的结果很惊人! 提示:运行演示函数的时候,可以尝试改变隐藏 ...