RESTful架构是否有任何标准设计实践?

时间:2011-05-28 16:43:48

标签: rest

自学成才的另一个缺点是你永远重新发明轮子。

我在RESTful架构上的工作越来越多,因此需要定义资源以及如何与资源进行交互。

是否有任何标准(和有效)设计方法或模板有助于枚举各种HTTP动词和资源的潜在响应,以帮助确保涵盖所有排列?

即使是基本的东西:

+----------------+---------------------------------------------+
| Resource Name: |                                             |
+----------------+---------------------------------------------+
|                      HTTP METHODS                            |
+------------+-------------------------------------------------+
| Method     |  Supported                                      |
+------------+-------------------------------------------------+
| GET        |     X                                           |
| PUT        |     X                                           |
| POST       |                                                 |
| DELETE     |                                                 |
+------------+-------------------------------------------------+
|                        RESPONSES                             |
+--------------------------------------------------------------+
| GET                                                          |
+--------------------------------------------------------------+
| Details of valid and necessary parameters for GETs and the   |
| possible responses...                                        |
| ...                                                          |
+--------------------------------------------------------------+

当然......我可以自己动手,但想知道是否有任何广泛认可的方法可供我采用。

6 个答案:

答案 0 :(得分:1)

您可能想查看Web Application Description Language。一些REST框架甚至可以为您生成描述。我非常喜欢Apache Jersey(如果你可以接受Java来实现)。

答案 1 :(得分:1)

RestMS.org包含用于设计Restful API的标准。

它不应该被视为福音,但通过阅读单页RestTL(Restful Transport Layer)定义,您将学到很多东西。

http://www.restms.org/spec:1

答案 2 :(得分:1)

自从我发布以来,我最近发现了许多API设计师。其中一个(Mulesoft's Anypoint Platform)使用一种名为RAML的语言(RESTful API建模语言)。

答案 3 :(得分:0)

最广泛接受和理解的方法是让您的RESTful消息具有自我描述性:

GET /foo HTTP/1.1

HTTP/1.1 200 OK
Allow: GET, PUT
...

{"description": "A foo. PUT a new representation to overwrite this one.", ...}

/foo是“资源名称”,“允许”标题是“HTTP方法”的列表,响应正文描述“回复”信息,无论是作为散文还是作为一组控件(像HTML表单一样。)

为确保涵盖所有排列,请编写测试。

答案 4 :(得分:0)

据我所知,没有标准的REST API设计方法。人们经常花太多时间讨论是否应该使用PUT或POST来获取特定方法。我认为最重要的是保持简单,与动词和格式的使用保持一致,并将其记录得非常好。

我认为你不应该试图涵盖HTTP动词和资源的所有排列,因为很可能是you ain't gonna need it

如果您正在寻找模板,请查看REST API guidelines from Atlassian。 根据我的经验,维基比任何一种从代码自动生成文档的工具都要好得多。

答案 5 :(得分:0)

没有标准的方法来描述RESTful Application / API的设计,因为REST是一种架构原则+方法,而不是一个定义良好的框架或设计模式。

您可以使用任何工具来描述您的资源及其互动(如果需要,可以从简单的电子表格到UML图表)。只要你能读出结果文件中的3个主要元素,任何东西都会起作用:

  1. 您的应用程序将提供的资源
  2. 每个资源将接受的方法
  3. 每个资源之间的链接
  4. 从这一点开始,您将能够创建应用程序的内部URL方案,创建公共URL等...