理想的API路线

时间:2012-08-24 01:05:35

标签: web-services api rest web-applications restful-url

我正在写一个api。到目前为止,我一直在使用一条路线:

http://api.com/resource

然后我将一个动作传递给json字段中的资源并从那里开始。从程序员和用户的角度来看,这是一个理想或优选的情况吗?

或者,

会是这样的:

http://api.com/resource/action

更有用,更安宁,正确(带你选择)。或者根本没关系?它的工作原理,但我的目标是公众消费,我想在变得更难改变之前,我不知道这个问题。

编辑:

要添加更多详细信息,我不关心的操作是GET,POST等。我有一条路线:

http://api.com/thing

这是一个POST路线,它创造了一个东西。事情不是存储在数据库中或此时的任何地方,因此创建的事物会立即返回响应。用户可以指定绘制颜色的东西:红色,黄色或绿色。从用户的角度来看,将颜色要求指定为上述发布数据的一部分或具有以下路线更为有用:

 http://api.com/thing/red

在哪里发帖会返回一个红色的东西。

1 个答案:

答案 0 :(得分:1)

基本上,不需要指定action(在URL或发送的数据中),因为在REST方法中,HTTP动词用于描述要对资源执行的操作。因此,您的两个解决方案并非真正“符合REST”。你应该首先做的是将你的路线http://api.com/resources与一些HTTP动词结合起来,以便:

像往常一样,以下惯例更好。对于喜欢惯例和最佳实践的程序员来说,您的两种解决方案并不理想。但是,您的第二个解决方案是可读且明确的。这意味着如果你真的想在两种解决方案之间做出选择,那么第二种解决方案似乎更好。但是,如果您要更新API以遵循更多REST约定,则应将resource视为真实资源并使用HTTP verbs

我建议你这两个关于REST API的演示文稿:

您可能对此问题和我给出的答案感兴趣:Resource and Action URI convention for REST

修改:根据您的新问题,将所有数据作为发布数据发送,甚至是您的颜色。它会更加一致。为什么它应该是不同的?只有在描述不同的资源时才应更改URI。如果颜色只是thing的属性,那么您不会描述两个资源,您应该使用所有其他发布数据发送颜色。