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. JDK(十)JDK1.7&1.8源码对比分析【集合】ConcurrentHashMap

    前言 在JDK1.7&1.8源码对比分析[集合]HashMap中我们对比分析了JDK1.7和1.8版本的HashMap源码,趁热打铁,这篇文章就来看看JDK1.7和1.8版本的Concurre ...

  2. NYOJ-171 聪明的kk 填表法 普通dp

    题目链接: http://acm.nyist.edu.cn/JudgeOnline/problem.php?pid=171 聪明的kk 时间限制:1000 ms  |  内存限制:65535 KB 难 ...

  3. C++垃圾回收器的实现

    一.简单介绍 这是一个自己写C++垃圾自己主动回收器,用到的都是标准C++语法.採用了引用计数加mark-sweep的方法.在没有循环引用的情况下,引用计数能够保证垃圾实时得到回收:对于有循环引用的情 ...

  4. Oracle ora-12514监听程序当前无法识别连接描述中请求的错误

    昨天刚安装好oracle数据库,还可以登录,到今天,登录时就发出了这样的错误 到网上找了半天,上面都是说监听器服务的问题,但是试过后依旧不行.最后重启了一次,就解决了异常 原来是oracle中一个服务 ...

  5. 自学tensorflow——2.使用tensorflow计算线性回归模型

    废话不多说,直接开始 1.首先,导入所需的模块: import numpy as np import os import tensorflow as tf 关闭tensorflow输出的一大堆硬件信息 ...

  6. springboot快速入门(五)——事务管理

    一.入门 概念就不再赘述了,由于一般我们是通过service控制事务,这里给出注解式的示例: package com.example.demo; import com.example.demo.bea ...

  7. 微信小程序:实现日历功能

    一.功能描述 实现日历功能 二. 代码实现 1. index.wxml <view class='wrap'> <view> <view class='date-show ...

  8. python爬虫之Scrapy框架(CrawlSpider)

    提问:如果想要通过爬虫程序去爬取”糗百“全站数据新闻数据的话,有几种实现方法? 方法一:基于Scrapy框架中的Spider的递归爬去进行实现的(Request模块回调) 方法二:基于CrawlSpi ...

  9. h5小球走迷宫小游戏源码

    无意中找到的一个挺有意思的小游戏,关键是用h5写的,下面就分享给大家源码 还是先来看小游戏的截图 可以用键盘的三个键去控制它,然后通关 下面是源代码 <!doctype html> < ...

  10. c# table 怎么在前台循环展示 ViewBag

    后台 public ActionResult DoctorEvaluation()//前台页面 { HE_Department HE_dt = new HE_Department(); DataTab ...