Web services 什么时候不使用RESTAPI?

Web services 什么时候不使用RESTAPI?,web-services,api,rest,restful-architecture,Web Services,Api,Rest,Restful Architecture,REST API始终被视为基础设施用途。我不是专家,但我发现他们应该实现的原则是处理水平扩展和性能的。它们应该抑制客户端和服务之间的各种密切关系(无会话等)。RESTAPI很少从业务角度考虑 上周,团队中有人提议将遗留应用程序的一部分实现为RESTAPI。此应用程序以前作为库(.NET)嵌入到每个请求它的应用程序中。RESTAPI很快就遇到了性能问题(客户端和服务器之间的往返太多)。作为一种解决方法,缓存是(在服务器端)实现的。在我看来,这违反了其余的原则。如果没有缓存,我们应该为一个客户机提供

REST API始终被视为基础设施用途。我不是专家,但我发现他们应该实现的原则是处理水平扩展和性能的。它们应该抑制客户端和服务之间的各种密切关系(无会话等)。RESTAPI很少从业务角度考虑

上周,团队中有人提议将遗留应用程序的一部分实现为RESTAPI。此应用程序以前作为库(.NET)嵌入到每个请求它的应用程序中。RESTAPI很快就遇到了性能问题(客户端和服务器之间的往返太多)。作为一种解决方法,缓存是(在服务器端)实现的。在我看来,这违反了其余的原则。如果没有缓存,我们应该为一个客户机提供多个服务器,以获得可接受的性能,并使用并行请求或负载平衡器(或类似的东西…)

当我们谈到API时,我认为这些API应该由业务需求驱动。根据您的经验,是否存在不适合REST的业务用例

[编辑]API是关于根据来自客户端的条目模拟工作流

作为一种解决方法,缓存是(在服务器端)实现的。在我的 在我看来,这违反了其他原则

实际上,使用缓存是一个必须遵循的REST约束。菲尔丁学位论文5.1.4缓存:我建议你在进一步提问之前阅读整个学位论文(或至少是其他部分)

它们应该抑制客户端和服务之间的各种密切关系(无会话等)

无状态是指将会话移动到REST客户机,而不是不能拥有会话。如果可以在客户端进行维护,则不希望在服务器端维护那么多的客户端会话。这使得缓存更容易

RESTAPI很少从业务角度考虑

我想这就是为什么大多数大公司都有RESTAPI。例如facebook、google、twitter等。。。这些API主要用于第三方客户端。Ofc。如果您的API将被公司中的许多客户机使用,那么使用REST可以替代使用SOA、其他RPC或消息代理解决方案

上周,团队中有人提议实现 遗留应用程序作为RESTAPI。此应用程序以前是 作为库(.NET)嵌入到每个请求它的应用程序中

REST是关于构建客户端可以使用的应用程序接口(或交付方法),而不是构建应用程序。它的目的类似于SOA的目的和我前面提到的其他东西。DDD是关于构建(大型)应用程序的

RESTAPI很快就遇到了性能问题(太多回合) 客户端和服务器之间的跳闸)。作为一种解决方法,缓存是 实现(在服务器端)

在这种情况下,检查性能问题的原因是有益的。如果您发送了一系列消息,因为REST API缺少一个特性,那么最好在REST服务中实现该特性,或者如果它很复杂,不一定属于低级服务,那么您可以编写一个高级REST服务,它使用低级服务(又称分层系统约束)。如果问题是用户太多,那么ofc。缓存和水平/垂直缩放是解决方案

什么时候不使用RESTAPI

我认为没有这样的规定。您可以在任何使用SOA或任何基于请求-响应的消息传递解决方案的地方使用REST。我认为它不适合基于事件的消息传递,因此该技术有其局限性。在这种情况下,您可以使用轮询或服务器发送的事件来解决问题,也可以创建一个混合接口,该接口通过HTTP使用REST作为req rep pat,使用(web)套接字作为应用程序接口的基于事件的部分

当您不想花钱为用户编写不同的客户机,或者希望客户机开发人员可以使用一个界面来集成您的系统时,REST是一个理想的选择。例如,公共facebook api,可供fb应用程序开发商使用,或批发商的私人api,可供零售商的网店使用,以自动更改价格或订购产品以填充库存


通过单个HTML页面,web应用程序REST可以很好地防止客户端上服务器端代码的重复。例如,将构建请求模板(URL、表单等)移动到服务(也称为HATEOAS约束)。因此,在浏览器中运行的客户机可以使用一些通用代码来构建基于JSON-LD响应的完整HTML页面。这是目前不常用的方法。

不要自欺欺人。。。任何协议/体系结构都可以编写糟糕、健谈和缓慢的API。顺便说一句,服务器端缓存如何违反REST?REST只是将HTTP协议用于不同的媒体类型和动词,而不是使用大型复杂的XML包装器(HTTP SOAP)在post上执行所有操作。如果我理解的话,在服务器上缓存一些与客户端相关的数据不会违反REST,因为此状态与客户端已知的状态不同?想象一下,客户端有一个客户上下文,服务器端有一个计算和缓存客户相关数据的RESTAPI……我将把它放在这里。。。谢谢,我可以改进我的想法…也许这(第一段)让它更清晰。很棒的帖子。非常感谢你的回答@Rénald我认为这是一个“如果你认为这是一个愚蠢的问题,请按-1;如果你不理解这个问题,请按关闭”的网站,而不是一个问答网站。以其他人的名义为这种态度感到抱歉!如果我敢问一些问题,我也总能得到这些选票。:-)谢谢你分享你的知识