1

正如 OO 经常涉及参数为对象的方法一样,REST 似乎不可避免地导致需要将资源作为参数传递。这怎么做最好?

一种方法似乎是资源的标量键是参数。所以我们可能会通过fooid=21以识别 foo 类型的资源。可能是单个标量不足以识别资源,因此我们可能需要通过footype=a&fooelement=2. 这看起来不太好,因为不清楚这些标量参数实际上是连接的并引用单个资源。

真的,如果参数是资源,它不应该被它的URI引用吗?所以我们可能想要传递更像/foo/21or的东西/foo/a/2。但是接下来有一个关于如何调用参数的问题。应该是foo=/foo/21吗?可能不是。明显的障碍是资源现在被过度指定了。我们知道这/foo/21是一个 foo 资源的实例,而没有被告知更多,我们不希望它可以编写bar=/foo/21.

我们并不真正想要一个完全中立的参数名称,例如resource=/foo/21因为如果多个参数是一种资源,那么它是不具信息性的并且难以使用。

因此,参数名称可能应该描述参数与提供它的资源/方法之间的交互。但是找到合适的描述有多容易?

有没有人对这些问题有任何想法?

4

1 回答 1

2

基本上,资源应该由其完整 URI 引用是正确的。这是最好的做法。时期。过度指定它是错误的,因为 URI 的语义对 REST 是透明的。客户端或服务器不应依赖 URI 来推断资源的类型。这就是媒体类型标头的用途。

如何命名参数实际上取决于与父资源的关系。例如,如果您有一个汽车资源和一个驱动程序资源,那么car.current_driver = 'http://myapi/drivers/12'只要 Car 媒体类型的文档清楚地说明 current_driver 是什么,就没有错。当尝试通过任何方法设置 Car 资源时,除了具有 Driver 媒体类型的资源之外,不应接受任何内容。

于 2013-11-08T12:09:53.293 回答