我已经实现了两个 REST 服务: Twitter 和 Netflix。这两次,我都很难找到将这些服务作为 REST 而不是 SOAP 公开的决策所涉及的用法和逻辑。我希望有人能告诉我我缺少什么,并解释为什么 REST 被用作这些服务的服务实现。
实现 REST 服务比实现 SOAP 服务花费的时间长得多。所有现代语言/框架/平台都可以使用工具读取 WSDL 并输出代理类和客户端。实现一个 REST 服务是通过手工完成的,并且通过阅读文档来实现。此外,在实现这两个服务时,由于没有真正的模式或参考文档,因此必须对通过管道返回的内容进行“猜测”。
为什么要编写返回 XML 的 REST 服务呢?唯一的区别是,在 REST 中,你不知道每个元素/属性表示的类型——你只能靠自己来实现它,而 希望总有一天在你认为永远是 int 的字段中不会出现一个字符串。SOAP 使用 WSDL 定义数据结构,因此这是一个不需要动脑筋的问题。
我听到过这样的抱怨,即使用 SOAP,您也会有 SOAP 信封的“开销”。在这个时代,我们真的需要担心一堆字节吗?
我听说过这样一种说法: 使用 REST,只需将 URL 放入浏览器,就可以看到数据。当然,如果您的 REST 服务使用简单的身份验证或不使用身份验证。例如,Netflix 服务使用 OAuth,它要求您在提交请求之前对事物进行签名和编码。
为什么我们需要一个“可读”的 URL 为每个资源?如果我们使用一个工具来实现服务,我们真的关心实际的 URL 吗?