【发布时间】:2010-11-01 11:22:57
【问题描述】:
我一直在阅读 REST Web 服务,并希望实现自己的 REST 服务。
我在互联网上看到的所有示例都与数据库访问有关。但是我想要实现的与访问数据库无关。
我想创建一个 REST 服务,该服务允许将大字符串和各种其他参数传递到资源中,并返回一个 xml 结果集。没有任何内容被创建或更新到数据库中,也没有从数据库中检索任何内容。它将数据传递给一个复杂的处理过程,然后返回结果。
我的问题在于我使用什么动词?
我觉得我应该使用 GET 动词来与最佳实践保持一致,但查询有时可能非常大,并且在查询字符串上传递它是可行的。
这给我留下了 POST。这似乎符合我想要实现的目标,但我认为它再次脱离了 REST 最佳实践!
REST 是否仅在想要与数据库交互时使用?
我应该放弃使用 rest 并创建 SOAP 服务的想法吗?
更新我的 REST 服务是分析文章并返回给定文章的关键字报告。鉴于此,资源为“关键字”,对此的 POST 将返回完整报告。我当时正在考虑关键字/推荐的第二个 uri,对此的 POST 将返回提交文章的一些推荐关键词。这符合 REST 吗?
【问题讨论】:
-
您能否更明确地说明您的应用程序设计,例如您如何将应用程序分解为动词和名词。
-
您应该使用 GET,因为 GET 允许缓存,而且听起来您系统的相同输入总是会产生相同的响应。
-
该协议确实非常适合数据库应用程序,但那是因为数据库会自动为您描述其资源。例如,一张桌子可以被称为人。然后很明显,这些方法对简单描述的实体的作用比对一堆实体的作用。我认为如果您的查询字符串变得太大,请重构您的应用程序,首先查看数据使用情况和描述。可能是设计问题。
-
既然您已经阐明了您实际想要实现的目标,请使用 PUT 方法,文章是一种新资源,因此您将其放入您的应用程序中。您的应用程序从未处理过此资源,因此您不应使用 POST。由于它是一种新资源,因此您无法使用 GET 对其进行查询,因为应用程序不知道您在说什么。
-
@WeNeedAnswers - 你不认为 Darrel Miller 根据 HTTP 规范给出的关于 POST 定义的答案是正确的方法。 PUT 旨在用于更新已存在或应用程序已知的资源。在我的例子中,网络服务不会知道它需要处理的文章的任何信息。