美文网首页程序员
RESTful API 设计规范

RESTful API 设计规范

作者: 小白frankie | 来源:发表于2017-07-30 09:29 被阅读0次

前言

网络应用程序,分为前端和后端两个部分。当前的发展趋势,就是前端设备层出不穷(手机、平板、桌面电脑、其他专用设备......)。因此,必须有一种统一的机制,方便不同的前端设备与后端进行通信。这导致API构架的流行,甚至出现"API First"的设计思想。RESTful API是目前比较成熟的一套互联网应用程序的API设计理论。

资源 (Resources)

URI (Uniform Resource Identifiers) 统一资源标示符

URI = scheme "://" authority "/" path [ "?" query ] [ "#" fragment ]

URI规范

URI不包含动词,使用名词复数。
URI不使用大写。
URI层级不要太深。
URL(Uniform Resource Locator) 统一资源定位符(URI的实现)

表现(Representation)

HTTP请求的头信息中,用Accept和Content-Type标示。

HTTP动词

对于资源的具体操作类型,由HTTP动词表示。

常用的HTTP动词有下面五个(括号里是对应的SQL命令)。

  • GET(SELECT):从服务器取出资源(一项或多项)。
  • POST(CREATE):在服务器新建一个资源。
  • PUT(UPDATE):在服务器更新资源(客户端提供改变后的完整资源)。
  • PATCH(UPDATE):在服务器更新资源(客户端提供改变的属性)。
  • DELETE(DELETE):从服务器删除资源。

还有两个不常用的HTTP动词。

  • HEAD:获取资源的元数据。
  • OPTIONS:获取信息,关于资源的哪些属性是客户端可以改变的。

Restful api 一些例子:

  • 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 的含义是相同的。

常见异常返回码

  • 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 - [*]:服务器发生错误,用户将无法判断发出的请求是否成功。

异步任务

由于互联网通信 高延时(high latency)、高并发等特点 异步任务派上大用场。

  • 先返回任务创建成功
  • 客户端轮询任务状态

相关文章

  • 【Spring Boot】构建RESTful API——(二)

    一、RESTful API设计规范 参考知乎上的《RESTful API最佳实践》一文,总结的RESTful AP...

  • 2018-10-09

    百度Fex推荐 深阅读 RESTful API 最佳实践 RESTful 是目前最流行的 API 设计规范,用于 ...

  • 快速了解RESTful API URL 设计

    RESTful是目前最流行的 API 设计规范,也是各公司招聘面试的项目之一。因为我之前对 RESTful API...

  • [转载]app后端API开发总结

    app后端API开发总结 25 Jun 2015 一.API 设计规范 1.1 按需Restful设计原则 按业务...

  • API设计规范

    API设计规范(RESTful) 一、协议 采用HTTPs 二、域名 https:// example.org/a...

  • RestfulAPI规范

    Restful是目前最流行的API设计规范,用于Web数据接口的设计。 动词+宾语Restful的核心思想就是,客...

  • 13 RESTful API

    RESTful 是目前最流行的 API 设计规范,用于 Web 数据接口的设计REST,即Representati...

  • RESTful API设计规范

    RESTful API设计规范 1、域名, 2、路径, 3、版本, 4、状态码, 5、HTTP请求方式, 6、返回...

  • RESTful API

    RESTful 是目前最流行的 API 设计规范,用于 Web 数据接口的设计。本文参考 《REST和RESTf...

  • RESTful API 设计规范

    前言 网络应用程序,分为前端和后端两个部分。当前的发展趋势,就是前端设备层出不穷(手机、平板、桌面电脑、其他专用设...

网友评论

    本文标题:RESTful API 设计规范

    本文链接:https://www.haomeiwen.com/subject/pwfclxtx.html