REST

自从Roy Fielding博士在2000年他的博士论文中提出REST(Representational State Transfer)风格的软件架构模式后,REST就基本上迅速取代了复杂而笨重的SOAP,成为Web API的标准了。

什么是Web API呢?

如果我们想要获取某个电商网站的某个商品,输入http://localhost:3000/products/123,就可以看到id为123的商品页面,但这个结果是HTML页面,它同时混合包含了Product的数据和Product的展示两个部分。对于用户来说,阅读起来没有问题,但是,如果机器读取,就很难从HTML中解析出Product的数据。

如果一个URL返回的不是HTML,而是机器能直接解析的数据,这个URL就可以看成是一个Web API。比如,读取http://localhost:3000/api/products/123,如果能直接返回Product的数据,那么机器就可以直接读取。

REST就是一种设计API的模式。最常用的数据格式是JSON。由于JSON能直接被JavaScript读取,所以,以JSON格式编写的REST风格的API具有简单、易读、易用的特点。

编写API有什么好处呢?由于API就是把Web App的功能全部封装了,所以,通过API操作数据,可以极大地把前端和后端的代码隔离,使得后端代码易于测试,前端代码编写更简单。

此外,如果我们把前端页面看作是一种用于展示的客户端,那么API就是为客户端提供数据、操作数据的接口。这种设计可以获得极高的扩展性。例如,当用户需要在手机上购买商品时,只需要开发针对iOS和Android的两个客户端,通过客户端访问API,就可以完成通过浏览器页面提供的功能,而后端代码基本无需改动。

当一个Web应用以API的形式对外提供功能时,整个应用的结构就扩展为:

把网页视为一种客户端,是REST架构可扩展的一个关键。

编写REST API

REST API规范
编写REST API,实际上就是编写处理HTTP请求的async函数,不过,REST请求和普通的HTTP请求有几个特殊的地方:

REST请求仍然是标准的HTTP请求,但是,除了GET请求外,POST、PUT等请求的body是JSON数据格式,请求的Content-Type为application/json;
REST响应返回的结果是JSON数据格式,因此,响应的Content-Type也是application/json。
REST规范定义了资源的通用访问格式,虽然它不是一个强制要求,但遵守该规范可以让人易于理解。

转自:REST - 廖雪峰的官方网站

最新文章

  1. Day03 - Ruby比一比:Module的include与extend
  2. ## Spark学习之路(一)
  3. 网易云信牵手有道乐读,解密「终身阅读者」背后的技术力量
  4. Flask form(登录,注册)
  5. MinIO Client完全指南 ​​​​​​​
  6. php获取页面指定内容,php 获取页面中的指定内容类
  7. uni-app商城源码/公众号/小程序/APP多端适配
  8. 【专家访谈】疫情带来的商机风口,汽车零部件企业如何抓住机遇实现华丽转身?
  9. windows服务启动程序_在Windows上快速启动程序的5种方法
  10. 百度富文本编辑器插入视频链接相关问题
  11. STM32通过串口控制LED闪烁或者呼吸效果
  12. 敏捷交付_确保敏捷交付
  13. C++ - CString 用法
  14. 连连支付怎么样?最新连连跨境支付详情介绍!
  15. LeetCode1446. 连续字符
  16. 留个念想,clipper库的使用效果
  17. 共享图书系统 图书借阅小程序系统开发心得体会 共享图书系统开发
  18. spring cloud 2020
  19. JavaScript 双击禁止选中文字
  20. 如何查询某只股票的历史股价?

热门文章

  1. python发送文件到服务器_python 使用poster模块进行http方式的文件传输到服务器的方法...
  2. 机器学习-回归之逻辑回归算法原理及实战
  3. JavaScript二叉搜索树
  4. 数据库、缓存、消息队列之外的下一站——Elasticsearch
  5. pprof 的原理与实现
  6. 本地存储和移动端js框架及bootstrap简介
  7. WebRTC视频编解码器性能评估
  8. “云端一体”的智能媒体生产制作演讲之路
  9. 网易易盾李雨珂:服务性能+算法确定性优化,迎接5G时代内容安全爆发式流量增长...
  10. LiveVideoStack线上分享第三季(十三):腾讯云LiteAVSDK演进之路