• REST ful


    前后端分离、面向资源、无状态;

    请求包含全部信息。

    什么是 REST

    下面六条准则定义了一个 REST 系统的特征:

    • 客户-服务器(Client-Server,提供服务的服务器和使用服务的客户需要被隔离对待。
    • 无状态(Stateless,来自客户的每一个请求必须包含服务器处理该请求所需的所有信息。换句话说,服务器端不能存储来自某个客户的某个请求中的信息,并在该客户的其他请求中使用。
    • 可缓存(Cachable,服务器必须让客户知道请求是否可以被缓存。(Ross:更详细解释请参考 理解本真的REST架构风格 以及 StackOverflow 的这个问题 中对缓存的解释。)
    • 分层系统(Layered System,服务器和客户之间的通信必须被这样标准化:允许服务器和客户之间的中间层(Ross:代理,网关等)可以代替服务器对客户的请求进行回应,而且这些对客户来说不需要特别支持。
    • 统一接口(Uniform Interface,客户和服务器之间通信的方法必须是统一化的。(Ross:GET,POST,PUT.DELETE, etc)
    • 支持按需代码(Code-On-Demand,可选),服务器可以提供一些代码或者脚本(Ross:Javascrpt,flash,etc)并在客户的运行环境中执行。这条准则是这些准则中唯一不必必须满足的一条。(Ross:比如客户可以在客户端下载脚本生成密码访问服务器。)

    什么是一个 RESTful Web Service

    REST 架构最初被设计出来用于 World Wide Web 使用的 HTTP 协议

    RESTful Web Service 的核心概念在于对 Resources 的抽象。Resources 被 URIs (Uniform Resource Identifier) 表征。客户使用 HTTP 协议定义的方法发送请求给这些 URIs,然后相应的资源的状态就可能会发生变化。

    RESTful API

    实用的是如何正确地理解 RESTful架构和设计好RESTful API。

    首先为什么要用RESTful结构呢?

    大家都知道"古代"网页是前端后端融在一起的,比如之前的PHP,JSP等。在之前的桌面时代问题不大,但是近年来移动互联网的发展,各种类型的Client层出不穷,RESTful可以通过一套统一的接口为 Web,iOS和Android提供服务。另外对于广大平台来说,比如Facebook platform,微博开放平台,微信公共平台等,它们不需要有显式的前端,只需要一套提供服务的接口,于是RESTful更是它们最好的选择。在RESTful架构下:

    。最后是要解放思想,Web端不再用之前典型的PHP或JSP架构,而是改为前段渲染和附带处理简单的商务逻辑(比如AngularJS或者BackBone的一些样例)。Web端和Server只使用上述定义的API来传递数据和改变数据状态。格式一般是JSON。iOS和Android同理可得。由此可见,Web,iOS,Android和第三方开发者变为平等的角色通过一套API来共同消费Server提供的服务。

    看了很多答案,讲的很详细,但是初学者一般都看的不是很懂。

    我在这里的答案主要解释什么是REST? 为什么要用REST?不包括具体该如何使用REST风格,你可以在网上看教程去学习相关知识。

    要解释什么是REST,你应该先了解什么是API(Application Programming Interface,应用程序编程接口),形象一点说就是像一个公司比如腾讯,阿里巴巴之类,他们可以提供一个API,然后我们或者一些其他的小公司可以编一个软件去跟这个接口(API)进行相连或交互。举个例子,比如你可以用手机的其他软件分享内容到微信朋友圈或者新浪微博,这些软件就是与微信和微博的api进行了交互。

    知道了API,那么就容易理解REST了。REST是什么呢? 它是一种架构风格,腾讯公司或其他公司建立API时要遵守的一种规则/风格,当然也有其他规则可以用。

    现在稍微具体一下什么是REST架构风格。REST也就是Representational State Transfer(表现层状态转移)。要具体什么事REST,我们又必须提到Web(大神请忽略这里,因为我这篇是想带0基础的人入门的),因为REST是以Web为平台的。

    Web是什么: 分布式信息系统为超文本文件和其他对象(资源)提供访问入口

    资源是Web架构的关键点,需要 3个操作  识别(identify) 表示(represent) 交互(interact with),通过这三个操作,又引出三个概念uri(统一资源标识符包括url和urn)识别资源;representation (例如html,xml,图片,视频等等)表示资源;通过协议(包括http,ftp等等)与资源进行交互。

    所以REST就是选择通过使用http协议和uri,利用client/server model对资源进行CRUD (Create/Read/Update/Delete)增删改查操作。

    那么为什么要使用REST风格呢?肯定是因为它的优点,所以才选择使用它呀。因此现在先介绍它的优点,

    要介绍它的优点又要提到它的六个限制,我看其他答案只提到了限制,但是没有写限制的好处,在这里我列出限制和它的好处:

    1.客户-服务器(Client-Server)客户端服务器分离

    优点,提高用户界面的便携性(操作简单)

             通过简化服务器提高可伸缩性(高性能,低成本)

             允许组件分别优化(可以让服务端和客户端分别进行改进和优化)

    2.无状态(Stateless)

    从客户端的每个请求要包含服务器所需要的所有信息

    优点:

    提高可见性(可以单独考虑每个请求)

    提高了可靠性(更容易从局部故障中修复)

    提高可扩展性(降低了服务器资源使用)

    3.缓存(Cachable)

    服务器返回信息必须被标记是否可以缓存,如果缓存,客户端可能会重用之前的信息发送请求。

    优点:

    减少交互次数

    减少交互的平均延迟

    4.分层系统(Layered System)

    系统组件不需要知道与他交流组件之外的事情。封装服务,引入中间层。

    优点:

    限制了系统的复杂性

    提高可扩展性

    5.统一接口(Uniform Interface)

    优点:

    提高交互的可见性

    鼓励单独改善组件

    6.支持按需代码(Code-On-Demand 可选)

    优点:

    提高可扩展性

    因为其他答案已经提到了一些概念,所以我没有多写。

    推荐书籍 REST in practice有中文版的,如果英语没有达到像看中文一样,我还是推荐先看中文的,效率会高一点

    如果去网上搜索网页,字数不多的文章,我建议看英文版的,写的会好一点。

  • 相关阅读:
    Mac修改默认的电子邮箱客户端
    记录下生活:ETC卡充值(上海)
    Mac下卸载Mysql数据库
    网络爬虫学习笔记 1
    Clock置换算法
    用random.randint函数时 报错 'str' object cannot be interpreted as an integer问题
    分页式存储管理
    初学C++ vector 容器
    马一个讲devc++调试讲的很好的视频
    一些笔记(xss 跨站脚本攻击)
  • 原文地址:https://www.cnblogs.com/feng9exe/p/8126054.html
Copyright © 2020-2023  润新知