RESTful是什么?

  本质:一种软件架构风格

  核心:面向资源

  解决的问题:降低开发的复杂性,提高系统的可伸缩性

  设计概念和准则:

    1、网络上所有的事物都可以被抽象为资源

    2、每个资源都有唯一的资源标识,对资源的操作不会改变这些标识

    3、所有的操作都是无状态的

  “资源”就是网络上的一个实体,或者说网络上的一个具体信息。(比如文本、音频、视频等)

HTTP协议

  完整的URL地址:schema://host[:post]/path[?query-string][#anchor]

  • scheme:指定底层使用的协议,例如:http,https,ftp
  • host:服务器的IP地址或者域名
  • port:服务器端口,默认为80
  • path:访问资源的路径
  • query-string:发送给http服务器的数据
  • anchor:锚(定义页面特定章节位置)

  请求的组成格式:请求行、消息报头、请求正文

  • 请求行:Method Request-RUI HTTP-Version CRLF
    例如:GET/HTTP/1.1 CRLF  (CRLF回车或换行符)
  • 请求方式
    • GET:请求获取Request-URI所标识的资源
    • POST:在Request-URI所标识的资源后附加新的数据
    • HEAD:请求获取由Request-URI所标识的资源的响应消息报头
    • PUT:请求服务器存储一个资源,并用Request-URI作为其标识
    • DELETE:请求服务器删除Request-URI所标识的资源
    • OPTIONS:请求查询服务器的性能,或者查询与资源相关的选项和需求

  响应组成格式:状态行、消息报头、响应正文

  • 状态行:HTTP-Version Status-Code Reason-Phrase CRLF
    例如:HTTP/1.1 200 OK
  • 常用状态码:
    • 200 OK  客户端请求成功
    • 400 Bad Request  客户端请求有语法错误,不能被服务器所理解
    • 401 Unauthorized  服务器收到请求,但是拒绝提供服务。需要授权的资源
    • 404 Not Found  请求资源不存在
    • 500 Internal Server Error  服务器发生不可预期的错误
    • 503 Server Unavailable  服务器当前不能处理客户端请求

RESTful架构和其他架构的区别

  SOAP WebService:

    WebService是一种跨编程语言和操作系统平台的远程调用技术。

    WebService通过HTTP协议发送请求和接收结果时采用XML格式封装,并增加了一些特定的HTTP消息头,这些特定的HTTP消息头和XML内容就是SOAP协议。

    

  效率和易用性:

  SOAP由于各种需求不断扩充其本身协议,导致SOAP处理方面的性能有所下降。同时在易用性方面以及学习成本上也有所增加。

  RESTful由于其面向资源接口设计以及操作抽象简化了开发者的不良设计,同时也最大限度的利用了HTTP最初的应用协议设计理念。

  安全性:

  RESTful对于资源型服务接口来说很合适,同时特别适合对效率要求很高但是对于安全要求不高的场景。

  SOAP的成熟性可以给需要提供给多开发语言的,对于安全性要求较高的接口设计带来便利。根据不同场景选择不同的架构。

[RESTful] RESTful是什么,为什么要使用它的更多相关文章

  1. RESTful restful api Representational State Transfer

    通俗直白讲:REST是一种编写风格,一种API接口规范.它的风格就是将对象(如学生)的状态(如增删改查,API接口版本号等等)通过其他方式传递,API的接口地址突显出描述的对象. -- == REST ...

  2. RESTful架构入门

    理解RESTful架构 - 阮一峰的网络日志http://www.ruanyifeng.com/blog/2011/09/restful RESTful API 设计指南 - 阮一峰的网络日志http ...

  3. Restful是什么,SOAP Webservice和RESTful Webservice

    首先,应该怀着这样一种心态来学习Restful——Restful你可以将其理解一种软件架构风格,并且诠释了Http协议的设计初衷,所以不要把他理解的那么神秘,Restful风格有好处,当然也是有坏处的 ...

  4. 论单页Web应用和RESTful架构

    单页Web应用 概述 单页Web应用并不是突然诞生的一门新技术,而是web展示的一种新的尝试.它将所有的动作局限于一个Web页面,在加载站点首页的时候就加载站点需要的JavaScript和CSS.单页 ...

  5. HTTP methods 与 RESTful API

    Note GET, primarily used to select resources. Other options for an API method include: POST, primari ...

  6. Web应用和RESTful架构

    Web应用和RESTful架构 单页Web应用 概述 单页Web应用并不是突然诞生的一门新技术,而是web展示的一种新的尝试.它将所有的动作局限于一个Web页面,在加载站点首页的时候就加载站点需要的J ...

  7. RESTful学习记录

    1.1 什么是RESTful RESTful架构,就是目前最流行的一种互联网软件架构.它结构清晰.符合标准.易于理解.扩展方便,所以正得到越来越多网站的采用. RESTful(即Representat ...

  8. 100、RESTful API

    本篇导航: RESTful RESTful API设计 基于django实现 基于Django Rest Framework框架实现 一.RESTful REST与技术无关,代表的是一种软件架构风格, ...

  9. [转] 使用slim3快速开发RESTful API

    本文转自:https://blog.csdn.net/u011250882/article/details/50101599 版权声明:本文为博主原创文章,转载请注明出处和作者名,尊重别人也是尊重自己 ...

随机推荐

  1. 设置IE浏览器跨域访问数据

    在开发中,经常会遇到多站点跨域访问后台服务获取数据的情况,解决方法有两种 自己写代理服务,访问代理服务,代理服务请求服务获取数据再返回: 设置浏览器可以跨域访问数据. 本文来讲如何设置IE浏览器跨域访 ...

  2. python+selenium的web自动化测试之一(手工执行)

    环境 Windows 前提: 1. python已正常安装 2. selenium已正常安装. 如果没安装,会报:ImportError: No module named 'selenium' (参考 ...

  3. 干货 | 揭秘如何增加listing多个类目节点

    流量是电商销售的必要因素,可以说,任何成功的电商平台都离不开流量.亚马逊listing优化做得好,不仅能提高产品的曝光率,还能提升转换率,而好的类目可以吸引大的流量.帮你快速爬升. 首先我们来了解一下 ...

  4. Arthur and Questions CodeForces - 518E (贪心模拟)

    大意: 给定序列$a$, 某些位置为'?', 求给'?'赋值使得序列$(a_1+a_2+...+a_k,a_2+a_3+...+a_{k+1},...)严格递增, 且$\sum|a_i|$最小. 化简 ...

  5. PDOMySQL实现类, 自动重置无效连接

    PHP连接MySQL时, 有可能因为MySQL的原因,而使得php里生成的连接无效.比如超过8小时, MySQL自动断开空闲连接的问题,虽然可以调高这个时间,但显然这不是比较文艺的实现方式.现在洒家用 ...

  6. [luogu P3953] [noip2017 d1t3] 逛公园

    [luogu P3953] [noip2017 d1t3] 逛公园 题目描述 策策同学特别喜欢逛公园.公园可以看成一张$N$个点$M$条边构成的有向图,且没有 自环和重边.其中1号点是公园的入口,$N ...

  7. Kotlin 使用类似C# 的yield功能

    用过c#的可能对 yield 关键字爱不释手,那么在像我这种被迫上java贼船的人,就想找到类似的功能. 我使用的是kotlin,下面的方法演示了产生一个序列的功能. val fibonacciSeq ...

  8. (整理4)RPC服务和HTTP服务简单说明

    很长时间以来都没有怎么好好搞清楚RPC(即Remote Procedure Call,远程过程调用)和HTTP调用的区别,不都是写一个服务然后在客户端调用么?这里请允许我迷之一笑~Naive!本文简单 ...

  9. Java加密算法

    密码的常用术语: 1.密码体制:由明文空间.密文空间.密钥空间.加密算法和解密算法5部分组成. 2.密码协议:也称为安全协议,是指以密码学为基础的消息交换的通信协议,目的是在网络环境中提供安全的服务. ...

  10. 如何不使用loop循环创建连续的数组

    ES5 Array.apply(null,{length:100}) Object.keys(Array.apply(null,{length:100})); ES6 [...Array(100)]