特点:简单可靠高效跨平台跨语言

含义:

  • Web Service 简单来说是指提供给不同设备通过互联网(一般使用 HTTP 协议)进行通信和交换数据的一种服务。RESTful Web Service 是实现 Web Service 的一种方式。
  • REST (Representational State Transfer),是一种架构方式和约定,和具体实现无关,也不一定必须基于Web。一般把采用 REST 架构的 Web Service 称之 RESTful Web Service,严格来说,我们应该称这种 Web Service 为具有 REST 风格的 Web Service,不是协议,没有规定传输消息的具体格式,简单和轻量级如:例如都使用HTTP传输,使用风格类似的 URL 作为 API 和 使用 JSON 或者 XML 来传输数据等等(目前 JSON 占据主导地位,并且有持续流行的趋势)。
  • 使用 SOAP 的 Web Service 实际上是以协议(protocol)的形式工作的。SOAP Web Service 严格规定了如何发现和描述 API,其传输的消息也有严格统一的格式(例如传输的载体XML有严格的格式规范)

REST 架构约定

  • CS结构(Client–server)服务端和客户端之间遵守相同的接口规范。在遵守相同接口规范的前提下,二者都可以独立演化,甚至可以被其它的实现替代。服务器不跟踪客户端的状态(分页的实现/Facebook API)提高了服务器的可扩展性(scalability)
  • 无状态(Stateless)任何时候一个客户端的请求数据都包含能够让服务端完成请求的充分信息,服务端不依赖前后不同请求的顺序和状态信息来完成请求。请求的session信息由客户端持有,并在必要时连同请求数据一起发送。服务端可以使用请求中的session信息去其它外部服务或者数据库获取相关内容进以便对该请求做权限验证等操作,提高了系统的健壮性(reliability),但也造成了传输数据的冗余性。
  • 缓存机制(Cacheable)提高服务器的效率和性能
  • 系统分层(Layered system)提高了系统的可扩展性方便我们管理不同资源的权限,有利于提高系统的安全性
  • 可定制代码(可选)(Code on demand)
  • 一致的接口(Uniform interface)降低子系统之间的耦合度子系统只要关注实现接口即可,在保证接口一致的情况下,不同的实现可以各自独立演化。
    • 一致的数据格式:比如 Web Service 请求返回格式要么是 HTML,要么是 XML,要么是 JSON,不能返回服务端自己内部使用的特殊格式。
    • 可以对已有数据进一步操作(Resource Identifiers):通常我们只要在返回的数据中包含一个 UID 即可做到这点。比如从服务端获得了一个订单数据,这个订单数据里应该保证有一个唯一的订单 ID,当我们想对这个订单进行进一步操作时,可以保障操作的是同一个订单。
    • 数据具有自我描述性:比如通过HTTP返回的数据里面有 [MIME type ]信息,我们从MIME type里面可以知道数据的具体格式,是图片,视频还是JSON。
    • 应用系统状态变化只依赖超媒体(Hypermedia):应用系统状态变化只依赖于服务端发来的Hypermedia(如超链接 hyperlinks)。举例来说,假设向一个微博 Web Service 请求一条微博信息,服务端响应信息中应该包含和这条微博相关的其它的URL。客户端可以进一步利用这些URL发起请求来获取感兴趣的信息。

最新文章

  1. OSGi 基本原理
  2. quick-cocos2d-x之testlua之VisibleRect.lua
  3. Excel学习笔记杂荟
  4. Sublime Text3自动保存的功能(失去焦点自动保存)
  5. NodeAsp——像开发NodeJS应用一样玩转ASP
  6. kaggle之旧金山犯罪
  7. poj2728 Desert King --- 01分数规划 二分水果。。
  8. python 基础学习3-函数
  9. python 之分发包
  10. rtmp指令解释--转
  11. Scala actor的使用
  12. Java递归读取文件路径下所有文件名称并保存为Txt文档
  13. mybatis中foreach使用
  14. android开发(46) 使用 textview实现文字的阴影效果,浮雕效果
  15. gene Ontology (基因本体论)
  16. .Net 环境下C# 通过托管C++调用本地C++ Dll文件
  17. POJ 1953 World Cup Noise(递推)
  18. Session的方法getSession() 与 getSession(boolean para)区别
  19. (3) iOS开发之UI处理-UIView篇
  20. 手动修改user-agent

热门文章

  1. Leetcode 860. 柠檬水找零
  2. spring ,springmvc的常用标签注解
  3. 一、ZooKeeper学习
  4. 解决SSH Secure Shell 连接Liunx 有乱码情况。
  5. py-faster R-CNN 用于训练自己的数据(1)
  6. django学习之——模版
  7. 使用深度学习检测TOR流量——本质上是在利用报文的时序信息、传输速率建模
  8. kaggle信用卡欺诈看异常检测算法——无监督的方法包括: 基于统计的技术,如BACON *离群检测 多变量异常值检测 基于聚类的技术;监督方法: 神经网络 SVM 逻辑回归
  9. Python3+selenium+BaiduAI识别并下载花瓣网高颜值妹子图片
  10. vs 编译库文件