专栏首页魂祭心原 REST - Representati

原 REST - Representati

REST并非是标准而是一种再互联网环境下开发提供服务的方法规范。REST 遵循 web 应用程序的体系结构风格,用户通过类似于选择翻页链接去往下一页的方式访问web应用程序。REST基于唯一URI标识的资源。

只要服务遵从定义的标准或特性,我们可以将这个服务称为 rest。REST 并不与任何特定的平台联系在一起, 当前在Web上使用 HTTP 完成的。

REST基础特征

客户端

关注点分离是将用户界面与数据存储分离的原则。这使得程序的用户界面能够移植到其他的平台,并通过简化服务器组件来提高可伸缩性。

无状态

每个发向服务器的请求都应该带有理解完成请求所需的全部信息

可缓存

返回的数据能够缓存以便于用户再其他时间调用,这能够提升性能并且减少网络通信。

分层系统

代理服务器或缓存服务器等中间服务器可用于提高性能或引入安全性。

统一接口

统一的接口 (如 HTTP HTTP GET, POST, DELETE, PUT) 用于访问资源。

一个RESTful定位web系统有下列特征:

URI

统一资源标识符-这是互联网上资源的唯一标记。web上的每个资源都有这样一个唯一标识符-通用标识符 (例如, URL)。所有的web浏览器,服务器,应用都能理解这个标识符,这使得人们能够再互联网上无障碍的连接交换信息。

MIME Type

例如:XML, HTML, and JSON.

HTTP Methods

HTTP创造了一种与web上的资源进行通信的标准方式。获取、放置、删除、张贴是访问资源的一些常用方法。

  • GET 用特定的表示方式请求资源.(并非局限于http的get/set等等)
  • PUT 用特定的表示方式更新资源.
  • PUT 删除指定的资源.
  • PUT 创建一个新资源.

设计RESTful服务

设计RESTful服务的第一步是确定需要公开的资源,然后是把这些资源映射到url。我们不应该局限在应用的方法设计上面,而是应该致力于设计资源的url。有许多可以和REST配合使用的数据格式,xml是最简单也是用的最多的。但是json也常常用到。

.NET 4 / REST / WCF

WCF并非仅仅能用来否剑SOAP服务,他是一个具有通用编程模型并且完全基于插件的通信基础框架。WCF运行时的基础工作是监听处理来自网络位置的消息,并将他们传递给应用程序(服务),使用WCF开发REST应用程序是一项简单的任务。微软提供了一个用来创建新项目的rest模板,它能够在创建除一个resst的基础结构。

安全性

如果您查看上述描述, 您将注意到这个缺陷, 此服务没有内置任何安全方面。但是, 当我们构建服务公开端点时, 应该注意安全问题。rest风格的服务只http端点, 因此使用 http (如 HTTPS、证书) 实现的所有安全方面也可以用 rest 实现。

有两种类型的托管服务、自寄宿web服务和与应用程序服务器(如 IIS)承载的 web 服务。自寄宿web服务中, 大部分的安全方面都应该在代码中得到注意;另一方面, 在 iis 中托管时, iis中设置会处理安全问题。

自寄宿的安全性

开放口的安全性由WebHttpBinding的安全属性设置。安全属性的类型为WebHttpSecurity,用于确定绑定所需的安全模式以及客户端凭据类型。WebHttpSecurity有两个属性: Mode 类型 WebSecurityHttpMode)和Transport (类型为 HttpTransportSecurity)。可使用WebHttpSecurityMode 指定的安全级别有三:

  • None
  • Transport
  • TransportCredentialOnly1. 这里是列表文本

类型为HttpTransportSecurity的WebHttpBinding.Security.Transport有助于对客户端进行身份验证。它有以下三属性:

  • ClientCredentialType (of type HttpClientCredentialType)
  • ProxyCredentialType (of type HttpProxyCredentialType)
  • Releam (String)

HttpClientCredentialType的值可以是下列任一项: None, Basic, Digest, NTLM, Windows, Certificate.

在 IIS 上部署的服务的安全性

在IIS上承载终结点时, 使用web.config文件进行配置,可以对运行服务的虚拟目录进行配置。我们需要知道客户机配置和虚拟目录配置。

授权

一旦经过验证,下一步就是授权客户端他们能做什么,他们不能做什么。

1.模拟: 通过模拟客户端, 授权被委派给另一个层。例如, 当客户端试图将数据插入或更新到 sql server 数据库中时, 如果客户端没有权限, sql server 将引发异常, 这可能会冒泡回客户端。

2.基于角色: 通过限制对某些 Windows 用户或组的操作的访问来实现授权。

优点

  • 与其他风格的服务相比,REST 风格提供的服务更易于使用, 这意味着消费者的学习曲线更低。
  • 服务的 URI 缓存。
  • 组件可以独立部署。
  • 轻量级 (相对使用 WSDL 使 soap 协议成为复杂服务的 soap)。
  • 简单客户端

缺点

从开发者角度来说主要缺点是没有主数据。因而需要料及其中的实现细节。从安全性的角度来说,RESTful服务依赖于HTT的安全性。

适于使用的情况

当我们计划设计一个专门在web上使用的应用程序时, 或者当我们需要快速客户端集成时, 可以使用REST。

不适合使用

在设计面向服务的体系结构的应用时, 它互联了许多系统并使用了许多传输通道, 所以最好使用 SOAP。

http://www.linkedin.com/pulse/rest-representational-state-transfer-madan-kumar

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 原 js页面传值参数打包类

    魂祭心
  • 原 单例字典

    魂祭心
  • 原 Curry的js实现

    魂祭心
  • web前端架构 - 写在前面的话

    写在前面的话: 因为是我自己亲身参与的项目,所以代码啊,架构啊,应该不会很高大上,反而会很土,很从底开始,一点点的加深对web前端架构的认识。 而且很有...

    web前端教室
  • 【持续更新】.Net 开发中给自己埋下的坑!

    1、文件“XXX”正在由另一进程使用,因此该进程无法访问此文件。 原因剖析:文件在主线程操作,在子线程中读写操作文件,刚开始没有意识到程序的问题所在,总是在Fi...

    waylon
  • 压榨、被套路 渠道商的出路何在?

    人称T客
  • 区块链技术如何改变人工智能

    区块链作为一项新兴技术,被人们认为有可能会打破各个行业的现有模式。区块链技术的分散系统与当今使用的固有集中式操作系统是对立的。通过采用分散式数据库体系结构的形式...

    liuxuewen
  • 编程小白 | 每日一练(49)

    这道理放在编程上也一并受用。在编程方面有着天赋异禀的人毕竟是少数,我们大多数人想要从编程小白进阶到高手,需要经历的是日积月累的学习,那么如何学习呢?当然是每天都...

    C语言入门到精通
  • 用TensorFlow.js进行人体姿态估计:在浏览器中即可实时查看人体姿态

    在与谷歌创意实验室的合作,我很高兴地宣布的发行TensorFlow.js版本PoseNet 机器学习模型,它允许在浏览器中实时估计人类姿态。在这里试试现场演示(...

    AiTechYun
  • 零售银行你懂多少?AIB(爱尔兰联合银行)案例解析

    AIB(爱尔兰联合银行)是由三家爱尔兰银行:Provincial Bank、Royal Bank of Ireland 和 Munster &Leinster ...

    ThoughtWorks

扫码关注云+社区

领取腾讯云代金券