后端api规范说明文档

原创 2018年04月15日 19:05:25

   我们此次后端api的实现主要是按照RESTful api规范来设计的,就是符合REST架构下设计api的规范。简单的来说REST结构就是:利用URL定位资源,用HTTP动词(GET,POST,PUT,DELETE)来描述相应操作。

       RESTful api主要的意义在于它可以让在不同形式的前端所接受到的用户请求能够统一的发送到一个后台并返回不同的前端。RESTful api是由后端SERVER实现并提供给前端来调用的一个接口。前端调用API来向后台发起HTTP请求,后台响应请求并将处理结构反馈给前端。所以说RESTful是典型的基于HTTP的协议。所以下面我们对RESTful api的设计原则与规范进行相应的说明:

一、协议

       API与用户的通信协议,总是使用HTTPs协议。

二、域名

   尽量将API部署在专用域名之下:

   例如https://api.jupiter.com

三、版本

   将我们API的版本号放入URL中:

   例如https://api.jupiter.com/v1/

四、路径

   路径又称"终点"endpoint),表示API的具体网址。

   在RESTful架构中,每个网址代表一种资源(resource),所以网址中不能有动词,只能有名词,而且所用的名词往往与数据库的表格名对应。一般来说,数据库中的表都是同种记录的"集合"collection),所以API中的名词也应该使用复数。

    举例来说,有一个API提供动物园(zoo)的信息,还包括各种动物和雇员的信息,则它的路径应该设计成下面这样:

          https://api.jupiter.com/zoo

          https://api.jupiter.com/animals

          https://api.jupiter.com/employees

五、HTTP动词

   对于资源的具体操作类型,由HTTP动词来表示,常用的HTTP动词有下面五个(括号中对应的是相应的SQL命令)

        GETSELECT):从服务器取出资源(一项或多项)。

        POSTCREATE):在服务器新建一个资源。

        PUTUPDATE):在服务器更新资源(客户端提供改变后的完整资源)。

        PATCHUPDATE):在服务器更新资源(客户端提供改变的属性)。

        DELETEDELETE):从服务器删除资源。

        下面是一些简单的例子:

        GET /zoos:列出所有动物园

        POST /zoos:新建一个动物园

        GET /zoos/ID:获取某个指定动物园的信息

        PUT /zoos/ID:更新某个指定动物园的信息(提供该动物园的全部信息)

        PATCH /zoos/ID:更新某个指定动物园的信息(提供该动物园的部分信息)

        DELETE /zoos/ID:删除某个动物园

        GET /zoos/ID/animals:列出某个指定动物园的所有动物

        DELETE /zoos/ID/animals/ID:删除某个指定动物园的指定动物

六、过滤信息

   如果记录数量很多,服务器不可能都将它们返回给用户。API应该提供参数,过滤返回结果,下面是一些常见的参数:

        ?limit=10:指定返回记录的数量

        ?offset=10:指定返回记录的开始位置。

        ?page=2&per_page=100:指定第几页,以及每页的记录数。

        ?sortby=name&order=asc:指定返回结果按照哪个属性排序,以及排序顺序。

        ?animal_type_id=1:指定筛选条件

   参数的设计允许存在冗余,即允许API路径和URL参数偶尔有重复。比如,GET /zoo/ID/animals GET /animals?zoo_id=ID 的含义是相同的。

七、状态码

   服务器向用户返回的状态码和提示信息,常见的有以下一些(方括号中是该状态码对应的HTTP动词):

        200 OK - [GET]:服务器成功返回用户请求的数据,该操作是幂等的(Idempotent)。

        201 CREATED - [POST/PUT/PATCH]:用户新建或修改数据成功。

        202 Accepted - [*]:表示一个请求已经进入后台排队(异步任务)

        204 NO CONTENT - [DELETE]:用户删除数据成功。

        400 INVALID REQUEST - [POST/PUT/PATCH]:用户发出的请求有错误,服务器没有进行新建或修改数据的操作,该操作是幂等的。

        401 Unauthorized - [*]:表示用户没有权限(令牌、用户名、密码错误)。

        403 Forbidden - [*] 表示用户得到授权(与401错误相对),但是访问是被禁止的。

        404 NOT FOUND - [*]:用户发出的请求针对的是不存在的记录,服务器没有进行操作,该操作是幂等的。

        406 Not Acceptable - [GET]:用户请求的格式不可得(比如用户请求JSON格式,但是只有XML格式)。

        410 Gone -[GET]:用户请求的资源被永久删除,且不会再得到的。

        422 Unprocesable entity - [POST/PUT/PATCH] 当创建一个对象时,发生一个验证错误。

        500 INTERNAL SERVER ERROR - [*]:服务器发生错误,用户将无法判断发出的请求是否成功。

   详细的状态码列表可见这里

八、错误处理

   如果状态码是4xx,就应该向用户返回出错信息。一般来说,返回的信息中将error作为键名,出错信息作为键值即可。

        例如:

   {
       error: "Invalid API key"
   }

九、返回结果

      针对不同操作,服务器向用户返回的结果应该符合以下规范:

      GET /collection:返回资源对象的列表(数组)

      GET /collection/resource:返回单个资源对象

      POST /collection:返回新生成的资源对象

      PUT /collection/resource:返回完整的资源对象

      PATCH /collection/resource:返回完整的资源对象

      DELETE /collection/resource:返回一个空文档

webapp前后端数据交互(实战购物商城)

本课程以一个购物商城的webapp为例子,告诉大家前后数据分离的情况下,前端人员应该如何通过后台接口来实现自己前端的逻辑功能。
  • 2017年12月18日 10:57

app后端开发二:API接口文档自动生成工具

在进行app后端开发过程中,后端会提供出来很多的api接口供前端开发使用,为了让前端开发人员顺利使用,我们会写好一份文档,告诉他们这个接口你该用 GET 还是 POST 来访问,同时访问的时候该给我传...
  • hel12he
  • hel12he
  • 2015-07-08 16:19:40
  • 12419

前后端接口规范---关键点1

关于REST 前后端接口按照粗浅的REST规则制定,其主要表现为: 使用GET、POST、PUT、DELETE共4个HTTP Method,而非简单的GET和POST两者。 响应使...
  • xiaoxuan2015
  • xiaoxuan2015
  • 2016-12-10 10:01:55
  • 4253

后端api规范说明文档

   我们此次后端api的实现主要是按照RESTful api规范来设计的,就是符合REST架构下设计api的规范。简单的来说REST结构就是:利用URL定位资源,用HTTP动词(GET,POST,P...
  • qq_31805915
  • qq_31805915
  • 2018-04-15 19:05:25
  • 32

前端接口文档范例

公司主页接口信息按模块划分的接口1. 获取公司主页:顶部信息1.1 method: GET1.2 path: /api/homeTop-messages/:companyId1.3 options:1...
  • res_min
  • res_min
  • 2017-05-11 15:38:54
  • 3603

前后端交互-一些关于接口设计的思考

原文链接:前后端交互-一些关于接口设计的思考 作者:安东尼_Anthony 前言最近在工作中和后端童鞋打交道,前后端沟通最为重点的就是接口API,这里整理一下接口设计的一些考虑点并做分析,希望...
  • u014315849
  • u014315849
  • 2017-11-18 11:04:14
  • 869

使用 .NET 和后台智能传输服务 API 来编写自动更新应用程序。

使用 .NET 和后台智能传输服务 API 来编写自动更新应用程序发布日期: 11/26/2004 | 更新日期: 11/26/2004Jason Clark本文假设您熟悉 C# 和 Visual B...
  • Sun_Jianhua
  • Sun_Jianhua
  • 2007-02-27 23:16:00
  • 3735

移动APP服务端API设计应该考虑到的问题

2014年,移动APP的热度丝毫没有减退,并没有像桌面软件被WEB网站那样所取代, 不但如此,越来越多的传统应用、网站也都开始制作自己的移动APP,也就是我们常说的IOS客户端、android客户端...
  • adparking
  • adparking
  • 2016-08-18 18:05:38
  • 6525

14.app后端如何设计api

app和后端的交互,一般都是通过后端提供的api实现。api的设计,估计很多刚进入app后端的小伙伴会一无头绪,不知道怎么入门。下面根据自己3年的app后端经验,总结出下几个api设计原则,给小伙伴参...
  • newjueqi
  • newjueqi
  • 2015-03-03 18:02:41
  • 30624

API文档自动生成工具

这是一个可以自动生成API文档的工具。操作简便,懒人必备!后端程序员必备良品!...
  • yufan_xiaowu
  • yufan_xiaowu
  • 2017-02-18 16:51:31
  • 6138
收藏助手
不良信息举报
您举报文章:后端api规范说明文档
举报原因:
原因补充:

(最多只允许输入30个字)