RESTful那么重要吗?

时间:2009-05-28 22:49:00

标签: json http rest asp.net-web-api

我正在开发一个基于Web的应用程序,它使用基于HTTP的JSON API在服务器和客户端之间进行通信。目标是使用相同的在线数据通过此Web服务共享,可以使用不同的目标(在线Web客户端,脱机桌面客户端或第三方创建)开发多个客户端。

现在,客户端和服务器之间的通信仅通过一个运行良好的系统通过POST发送。我阅读了很多关于REST的信息,并使用PUT,GET,POST和DELETE对HTTP进行RESTful。我可以将我的API分成这些不同的类别,但这意味着更多的代码和对API的一些更改。

我的问题是:基于HTTP的API对RESTful有多重要?这是推荐,选择还是近乎必要的?

提前致谢。

6 个答案:

答案 0 :(得分:14)

作为die-hard RESTafarian,我要说完全使用HTTP(有问题的REST协议)。为什么?好吧,我将通过昨天与我的一位好朋友的电子邮件交流向您展示两个片段,他们非常聪明(曾经是IT教授,仍然讲课,无论走到哪里都会踢屁股);

  

昨天我通过了一个重要的事情   我的mappodrhom的里程碑   应用程序:我现在可以启动了   长期运行的背景计算
  进入工人池。当他们完成时,   工人们回复他们的结果   直接进入REST资源。   这会触发更多背景   处理,全部由a控制   依赖图。

     

有趣的方面是   这个RESTful背景是
  实际上独立于我的   特别的应用。但我是   目前太累了,不完全   掌握后果: - )

有问题的后果是巨大的(它是一个REST框架,包含许多小堆栈和事件,服务和应用程序,都有自己可发现的URI,都具有相同的统一接口),并且在可扩展性和可伸缩性方面,它是简单无比。如果你的应用程序是一个永远不会去旅行或遇到热小鸡的小东西,是的,也许你不需要它。但后来我说了同样的话,突然发现自己乘坐的火车去了巴黎,带着一个可爱的女孩,这是俄罗斯人的秘密间谍,好吧,有一件事导致了另一件......

这是我的回复,有一些我自己的经历;

  

我觉得这听起来(原谅我的法语)   真棒!我正在经历   与我自己的REST东西类似的东西,   因为中间层是这样的   薄而透明,我可以   以我需要的方式扩展事物   没有太多担心   基础结构。这是一种自由,   我的这样一个很酷的事情   大脑是爆炸性的,而且是   令人担忧的是为什么更多的不是   这样做?

简而言之,做REST only half-way就像没有真正做到这一点。你只是将你的东西转移到不同的管道上,错过了简化的API到状态机,语义和实现在核心的解耦,使用构建网络的原则(因此我会说你'我们背后有相当成熟的想法),统一的界面,并将URI作为建模的一部分。

我知道说你可以选择,这是所有选择都很受欢迎。不是。 REST only makes sense完全使用它,但是为了说服你实际伸展你的大脑并做一些聪明的事情,我只能敢于你通过FUD(这完全是关于RPC,只需要GET和POST) ,你不需要它,相当于JSON,SOAP和其他类似的东西,等等,并且更聪明地了解如何创建应用程序。 是的,我敢于你们所有人!

答案 1 :(得分:5)

除非您打算利用超媒体,否则我不会费心去遵守REST约束。超媒体是使系统大于其各部分之和的难题之一。

您可以自由选择要在架构中遵守哪些REST约束,只需注意,为了能够调用最终结果RESTful,唯一的可选约束是“代码下载”。

答案 2 :(得分:1)

在将Web应用程序公开为具有定义良好的API的Web服务的过程中,它是一种选择。其他选项包括:

  1. 无API - 应用程序没有真正的方法可用作其他分布式系统中的组件
  2. SOAP - 用于定义API远程调用的XML格式
  3. JSON - 一种紧凑的信息交换格式,可以构建自定义API格式(或者用于构建REST系统)
  4. 许多其他形式的远程过程调用和信息交换媒介。
  5. REST背后有一个很好的理想,但这并不意味着你必须为你的应用程序提供REST API。如果增益不值得付出额外的努力,请不要打扰。

答案 3 :(得分:0)

这是一个推荐。我很高兴你没有进入你需要进入的RESTful,因为有一些叫做Hi-Rest和Lo-REST的东西。您可以通过Google搜索获取更多信息。我知道的一些行业资深人士并不关心这一点,但我确实发现它与html保持一致,http会帮助你从长远来看并简化很多事情。

答案 4 :(得分:0)

我会认为这是一件好事,但不是必须的。根据我的经验,添加这种架构会增加项目的范围和复杂性,但它确实为整体增添了一丝优雅。我想说如果你有足够的时间和预算,那就去吧,如果你不担心的话。

答案 5 :(得分:-1)

服务API需要考虑的一件事(最多)是最终用户可以轻松使用它们。 REST正在获得非常强大的工具存在。

到目前为止,最大的开发组是.NET开发组,使用ADO.NET for services(Astoria)使用Linq消费REST非常简单而且非常优雅。