我正在写一个api。到目前为止,我一直在使用一条路线:
http://api.com/resource
然后我将一个动作传递给json字段中的资源并从那里开始。从程序员和用户的角度来看,这是一个理想或优选的情况吗?
或者,
会是这样的:
http://api.com/resource/action
更有用,更安宁,正确(带你选择)。或者根本没关系?它的工作原理,但我的目标是公众消费,我想在变得更难改变之前,我不知道这个问题。
编辑:
要添加更多详细信息,我不关心的操作是GET,POST等。我有一条路线:
http://api.com/thing
这是一个POST路线,它创造了一个东西。事情不是存储在数据库中或此时的任何地方,因此创建的事物会立即返回响应。用户可以指定绘制颜色的东西:红色,黄色或绿色。从用户的角度来看,将颜色要求指定为上述发布数据的一部分或具有以下路线更为有用:
http://api.com/thing/red
在哪里发帖会返回一个红色的东西。
答案 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
的属性,那么您不会描述两个资源,您应该使用所有其他发布数据发送颜色。