处理 Restful 服务
Posted
技术标签:
【中文标题】处理 Restful 服务【英文标题】:Handling Restful services 【发布时间】:2013-07-29 15:38:44 【问题描述】:我一直在想有一种很好的方法来实现(实际绑定)作为客户端的 restful 服务。
您经常会看到代码 sn-ps,其中 URL-“字符串”在高级代码中被连接起来,这显然是非常混乱的。
喜欢
"http://service.url/firstname/" + $firstname + "/surname/" + $surname
这样做的正确方法是什么?
对我来说,使用经典 rpc (JSON/XML-RPC) 方法更容易解决这个问题,在这种方法中,您可以签订合同,并且可以对您的期望更加严格。
谢谢!
-亚历山德罗
【问题讨论】:
【参考方案1】:REST 的答案是您不应该构建 URL。在遵循 REST 租户的系统中,您正在跟踪指向已为您提供的资源的链接,以便您在系统的超媒体中导航。您从一个合理的知名 URL 作为导航的根目录开始,然后从那里浏览资源。
这被称为HATEOAS - Hypermedia as the Engine of Application State。它是 REST 架构约束之一。
此约束的显着优势是将客户端与 API 分离,从而使 API 可以随时更改其 URL 方案,并且各个客户端不必进行类似的更改。对“旧”网址的请求会出现 300 范围的错误,而新网址会逐渐填充到它们的缓存中。
就性能而言,缓存这些 URL 是合理的,只要您遵守 300 范围的代码并适当地更新缓存的 URL。
这意味着,如果您想找到具有给定名称的特定用户,您会假设您已经缓存了他们的 URL,或者您有一种机制(如 OpenSearch)来查找符合条件的用户。您不会“构建”该 URL,除非该服务为您提供了一个模板供您填充。
您可以在http://www.thomas-bayer.com/sqlrest/ 找到一个很好的 REST 服务教育示例。您的浏览器是一个足以与服务交互的客户端,并且应该演示任何客户端如何通过遵循超媒体格式来发现系统资源。
【讨论】:
感谢您的回答。对于使用常规浏览器浏览的 Web 应用程序,您的方法/想法似乎非常好。但是,例如,我将如何在所谓的真正的 JS 应用程序中做到这一点?你有例子吗?以上是关于处理 Restful 服务的主要内容,如果未能解决你的问题,请参考以下文章
如何在 iOS 中使用 RestKit 来处理发送 JSON 而没有 rootkey 的 RESTful 服务器?