BugPhobia准备篇章:Beta阶段前后端接口文档

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":"[email protected]",

        "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


ü  PageNum 前端所显示的问题的页数(默认此值为10)


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


ü  PageNum 前端所显示的问题的页数(默认此值为10)


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


ü  PageNum 前端所显示的问题的页数(默认此值为10)


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


ü  PageNum 前端所显示的问题的页数(默认此值为10)


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, //标签名,用于通过标签查询问题(可选,没有的话就随便给一些)

ü  pageNum, //前端所显示问题的页数(现在每页显示10道题)


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, //标签名,用于通过标签查询问题(可选,没有的话就随便给一些)

ü  pageNum, //前端所显示问题的页数(现在每页显示10道题)


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, //标签名,用于通过标签查询问题(可选,没有的话就随便给一些)

ü  pageNum, //前端所显示问题的页数(现在每页显示10道题)


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,

ü  pageNum, //前端所显示问题的页数(现在每页显示10道题)


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"} // 其他原因导致失败

时间: 2024-10-12 02:40:04

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

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

前后端分离的常见开发方式是: 后端:接收http请求->根据请求url及params处理对应业务逻辑->将处理结果序列化为json返回 前端:发起http请求并传递相关参数->获取返回结果处理相关逻辑 分离的主要目的是让前后端可以并行的进行工作,彼此之间只需要依赖一份接口文档 接口文档可能会使用一些文本工具进行记录,例如word,excel等 其中记录的内容可能为请求路径,请求类型,请求参数,响应参数,请求示例,响应示例,变更记录等 不过以上方式还存在那么一点不完美,那就是前端需要等待后

前后端分离ssm配置swagger接口文档

之前配置过springboot,相比ssm要简单很多,现在记录一下ssm的配置 在pom.xml中加入依赖 <!--swagger本身不支持spring mvc的,springfox把swagger包装了一下,让他可以支持springmvc--> <dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swagger2</artifactId> <ve

app后端开发二:API接口文档工具

悲伤的历史 在进行app后端开发过程中,后端会提供出来很多的api接口供前端开发使用,为了让前端开发人员顺利使用,我们会写好一份文档,告诉他们这个接口你该用 GET 还是 POST 来访问,同时访问的时候该给我传递一些什么参数,以及正确的时候我会返回什么给你,已经返回的数据样式以及字段解释等等这些事情,我们都需要在文档中写好写清楚. 在 app后端开发一:基于swagger-ui构建api接口文档工具 这篇博客中,我写了 swagger-ui 的好处以及优势.但是在使用过程中,发现不够给力.我想

项目过程中各阶段应交付的文档

需求阶段 功能分析<详细功能分析书> 功能用例<UAT用例> 旧系统代码分析攻关<代码关键点分析书> 数据库分析<数据库字典> 设计阶段 设计原型<Axure原型图> 框架选型<框架体系结构图> 菜单导航.部门用户.角色权限.操作权限.系统日志.UI框架.报表组件.跨平台方案.WebAPI.数据访问 业务层设计<详细设计文档> 数据库设计<PD文档> 开发计划安排<开发进度WBS> 开发阶段 从源数

接口文档

什么是接口文档? 在项目开发中,web项目的前后端分离开发,APP开发,需要由前后端工程师共同定义接口,编写接口文档,之后大家都根据这个接口文档进行开发,到项目结束前都要一直维护. 为什么要使用接口文档? 1.项目开发过程中前后端工程师有一个统一的文件进行沟通交流开发. 2.项目维护中或者项目人员更迭,方便后期人员查看.维护. 接口文档的核心是什么? 接口核心分为四个部分: 请求方法. uri.请求参数.返回参数. 请求方法: 即请求的方法是什么.常用的请求方法有get.post.delete.

接口文档自动生成工具apidoc

前后端分离之后,接口文档是前后端沟通的必要手段.然后接口文档包含大量的重复性工作,费时费力,像apidoc这样工具就十分必要了. 官方文档:http://apidocjs.com/ -------------------------------------------------------------------------------------------------- 首先说一下自己遇到的坑: 1.安装,node.js版本要高(在官网下最新的就行),不然后面有的模块会出问题,导致apid

后台接口文档示例

什么是接口文档? 在项目期间,前后端是分离开发的,为了前后有连贯性,就必须由前后开发工程师共同定义接口.写接口文档再根据接口文档去开发,一直到项目结束. 接口文档规范 方法 也就是我们常写的新增,删除,修改,查询 url 调用方法,一般是从前端调后端的方法地址 请求参数 一般分五列:字段.说明.类型.备注.是否必填 返回参数 1.如果只返回接口调用成功还是失败(新增.删除.修改等),则只有一个结构体: code和message两个参数: 2.如果要返回某些参数,则有两个结构体: 是code/me

Api接口文档管理工具,你知道哪些呢?

上周看到有人在我的Github开源项目中提了个issue,说是否考虑接入swagger.那今天我就用swagger与其他接口文档工具做对比,同时说说Api接口文档工具的那点事.如今,在前后端分离开发的这个年代,Api接口文档管理工具越来越显得重要.完整的Api接口文档能大大提升前后端开发协作的效率. image 目前市场有哪些比较优秀的接口文档管理工具呢?Swagger Api接口文档工具到底如何,我大致汇总一下吧! 一.Swagger 说到Swagger,他确实是为开发者发明的一款神器,他可以

转:Swagger2自动生成接口文档和Mock模拟数据

转自:https://www.cnblogs.com/vipstone/p/9841716.html 一.简介 在当下这个前后端分离的技术趋势下,前端工程师过度依赖后端工程师的接口和数据,给开发带来了两大问题: 问题一.后端接口查看难:要怎么调用?参数怎么传递?有几个参数?参数都代表什么含义? 问题二.返回数据操作难:数据返回不对或者不够怎么办?怎么才能灵活的操作数据? 这是很多公司前后端分离之后带来的困扰,那怎么来解决这些问题? 问题一的一般解决方案:后端团队共同维护一个在线文档,每次改接口再