我想拥有一个Foo的REST资源,我希望能够执行POST来创建新的Foo。构建这个REST URI的正确方法是什么?
Foos只能是两个子类型 - Fizz和Buzz(模型是后端的FooFizz和FooBuzz,两者都扩展Foo)。所有Foos都是Fizz或Buzz。大多数其他模型也遵循这种模式(通用与Fizz和Buzz的子类型)。在短期和中期内,Foos将不会增加新的类型。从长远来看,在添加新类型之前,该应用程序更有可能会过时,但存在这种可能性。
无论如何,这里有一些我为与Foos合作而想出的URI方案。
POST/foo的β型=香味
POST /富/香味
POST /香味/富
POST /富-香味
POST/foo/{foo-id}/fizz
我对此的看法:
(1)可能是不必要的客户端 - 服务器耦合,因为它依赖于正确形成的查询字符串。但它对我来说最有意义。 (2)和(3)是不受欢迎的,因为您希望能够使用URI go/foo/{foo-id}来对单个Foo执行操作。
(4)需要Fizzes和热闹非凡,成为URI树的完全独立的分支
(5)似乎是一个不错的方案,尽管它可能搞乱了URI树。
我认为你是对的。也许我太依赖于信息传输的URI。 – smcg 2012-02-23 15:48:25
我不喜欢将查询参数与POST混合。任何时候我看到这一点,我怀疑这是一个错误的设计。 :-) – 2012-02-23 15:51:25