REST全称是Representational State Transfer,中文意思是表述性状态转移。不管是英文还是中文解释,恐怕一眼看上去都难得其意!
那究竟指的是什么的表述? 其实指的就是资源。任何事物,只要有被引用到的必要,它就是一个资源。要让一个资源可以被识别,需要有个唯一标识,在Web中这个唯一标识就是URI(Uniform Resource Identifier),标识的资源可能是服务器上的一个文件,不过,也可能是一个邮件地址、新闻消息、图书、人名、Internet主机或者任何其它内容。URI既可以看成是资源的地址,也可以看成是资源的名称,它包含URL和URN。

  • URL = Universal Resource Locator 统一资源定位符
    URL唯一地标识一个资源在Internet上的位置。不管用什么方法表示,只要能定位一个资源,就叫URL。
  • URN = Universal Resource Name 统一资源名称
    URN它命名资源但不指定如何定位资源,比如:只告诉你一个人的姓名,不告诉你这个人在哪。

一、URL 设计

RESTful 的核心思想就是,客户端发出的数据操作指令都是"动词 + 宾语"的结构。简单来说就是URL定位资源,用HTTP动词描述操作。
比如用GET来表示读取,POST表示新建,PUT表示更新,PATCH表示更新,但通常是部分更新,DELETE表示删除。

1.宾语必须是名词

宾语就是 API 的 URL,是 HTTP 动词作用的对象。它应该是名词,不能是动词。

GET /article
2.复数 URL

没有统一的规定,但是常见的操作是当要读取一个集合要用复数形式。

GET /articles
3.避免多级 URL

当资源需要多级分类时,比较好的做法是,除了第一级,其他级别都用查询字符串表达。这种URL不仅利于扩展,语义也更加明确。

GET /articles?published=true

二、状态码

状态码表示必须明确
  • 通常来说:1xx表示相关信息,2xx表示操作成功,3xx表示重定向,4xx表示客户端错误,5xx表示服务器错误。RESTful就要求将这五类按不同请求方式进行细分。

  • 以GET为例

200(OK)——表示已在响应中发出
204(无内容) —— 资源有空表示
301(Moved Permanently) —— 资源的URI已被更新
303(See Other) —— 其他(如,负载均衡)
304(not modified)—— 资源未更改(缓存)
400 (bad request)—— 指代坏请求(如,参数错误)
404 (not found)—— 资源不存在
406 (not acceptable)—— 服务端不支持所需表示
500 (internal server error)—— 通用错误响应
503 (Service Unavailable)—— 服务端当前无法处理请求

三、服务器回应

1.不要返回纯本文

API 返回的数据格式,不应该是纯文本,而应该是一个 JSON 对象,因为这样才能返回标准的结构化数据。所以,服务器回应的 HTTP 头的Content-Type属性要设为application/json。
客户端请求时,也要明确告诉服务器,可以接受 JSON 格式,即请求的 HTTP 头的ACCEPT属性也要设成application/json。

2.发生错误时,不要返回 200 状态码

状态码反映发生的错误,并将具体的错误信息放在数据体里面返回。在发生错误时也返回200状态码,这种做法是不恰当的。

3.提供链接

在回应中,给出相关链接,便于下一步操作。这样的话,用户只要记住一个 URL,就可以发现其他的 URL。这种方法叫做 HATEOAS。

HATEOAS(Hypermedia as the engine of application state),超媒体即应用状态引擎。它是REST架构的主要约束。“hepermedia”表示任何包含指向图片、电影、文字等资源的链接,Web是超媒体的经典例子。HATEOAS背后的思想其实非常简单,就是响应中包含指向其它资源的链接。客户端可以利用这些链接和服务器交互。

超媒体是什么?
当你浏览Web网页时,从一个连接跳到一个页面,再从另一个连接跳到另外一个页面,就是利用了超媒体的概念:把一个个把资源链接起来。
要达到这个目的,就要求在表述格式里边加入链接来引导客户端。在《RESTful Web Services》一书中,作者把这种具有链接的特性成为连通性。
这一特性应用特别广泛,比如创建订单后通过链接引导客户端如何去付款。

————愿你在迷茫时,坚信你的珍贵,爱你所爱,行你所行,听从你心,无问西东。

RESTful API?What is it?相关推荐

  1. 深入探索REST(1):如何设计好的RESTful API?

    REST架构风格最初由Roy T. Fielding(HTTP/1.1协议专家组负责人)在其2000年的博士学位论文中提出.HTTP就是该架构风格的一个典型应用.从其诞生之日开始,它就因其可扩展性和简 ...

  2. 如何设计好的RESTful API?

    REST架构风格最初由Roy T. Fielding(HTTP/1.1协议专家组负责人)在其2000年的博士学位论文中提出.HTTP就是该架构风格的一个典型应用.从其诞生之日开始,它就因其可扩展性和简 ...

  3. 虚拟研讨会:如何设计好的RESTful API?

    http://www.infoq.com/cn/articles/how-to-design-a-good-restful-api/ REST架构风格最初由Roy T. Fielding(HTTP/1 ...

  4. 如何设计出优秀的Restful API?

    1 你一直在错误的使用http协议 现在微服务真是火的一塌糊涂!大街小巷,逢人必谈微服务,各路大神纷纷忙着把自家的单体服务拆解成多个Web微小服务!而作为微服务之间通信的桥梁,Web API的设计就显 ...

  5. whitelabel error page什么意思_什么是RESTful API?总算能说清楚了

    要弄清楚什么是RESTful API,首先要弄清楚什么是REST.REST -- REpresentational State Transfer,英语的直译就是"表现层状态转移". ...

  6. react 访问后端_react前端用nginx怎么配置跨域访问后端restful api?

    开发机器是windows,windows中安装了centos虚拟机做restful api服务器,在浏览器中可以正常访问该api服务器: http://192.168.33.3:8080/articl ...

  7. restapi是什么意思_深入理解什么是RESTful API ?

    前言:最近两年很火爆的网络框架Retrofit,使用它的时候,查看文档会告诉你,要求后台的服务器哥们必须符合REST规范给你设计接口,作为安卓开发工程师来说,我就很奇怪了,REST规范到底是啥?本着极 ...

  8. 什么是RESTful API?

    一. 定义 Rest的全称是Representational State Transfer,2000年由Roy Fielding发表在他的博士论文中,首次提出了Restful的概念.Restful 做 ...

  9. 为什么少有人使用RESTful API?

    RESTful API 想要回答这个问题,首先得知道RESTful风格的API是什么样的. 接下来看看一个完整的RESTful API是怎么形成的. Richardson Maturity Model ...

  10. 框架下cookie的使用_为什么自动化运维系统越来越多使用都RESTful API?

    Flask是轻量级.易于采用.文档化和流行的开发RESTful API的非常好的选择,也是笔者在工作中最常用的Flask Web框架之一.从根本上说,Flask是建立在可扩展性和简单性的基础之上的.F ...

最新文章

  1. CCF 202104 Python
  2. 《剑指offer》-- 二叉树的下一个结点、对称二叉树、按之字性顺序打印二叉树、把二叉树打印成多行
  3. -javaagent:_从javaagent迁移到JVMTI:我们的经验
  4. add separator in the sessionmenu
  5. Android 动态申请多个权限 (第三方插件版:EasyPermissions)
  6. 小米这样做,我是拒绝的
  7. java 快速排序算法简单_Java 快速排序算法的简单说明及实现
  8. 【学习笔记】模糊控制算法
  9. 顺序表-有序顺序表的归并算法(新建表+小的先放+余下归并)
  10. chrome 恐龙 html源码,Chrome 恐龙快跑
  11. 我爱淘冲刺阶段站立会议2每天任务3
  12. Steve Jobs Said
  13. 联发科处理器真有那么不堪吗?
  14. 亲自动手写爬虫系列三、爬取队列
  15. Win10 / 11新电脑最简单跳过联网激活和使用本地账户登录方法
  16. 综述论文要写英文摘要吗_关于小论文的一些撰写建议!
  17. iOS应用跳转(包括iPhone原有应用跳转和第三方应用跳转)
  18. 常用广域网协议配—Vecloud
  19. CCM单电压环BUCK开关变换器传递函数理论分析与simulink估算对比
  20. fireworks快捷键

热门文章

  1. 手机怎么拍照翻译英文呢?这个翻译小技巧分享给你
  2. 【Syslog】采用Syslog4j发送总线日志
  3. 玩转MySQL:都2022年了,这些数据库技术你都知道吗
  4. 四巨头音源500GB合集-Spectrasonics omnisphere | Keyscape | Trilian | Stylus RMX 2020
  5. 如何使用 OceanBase 分区表进行水平拆分
  6. CentOS下载教程
  7. 交通标志识别简单总结
  8. 国资委监管的53家副部级央企名单
  9. C# SerialPort自定义串口DCB
  10. 蒲慕明院士的12场神经科学课程讲座汇总