1

我正在使用 RESTful 网络服务,并且我有一个特殊要求,我需要从数据库中提取一条记录,但该记录有一个组合的主键。您如何建议以考虑这种情况的方式形成 URI?

在我看来,典型的案例是:

//brings the product whose PK is 1
http://mywebsite.com/products/1

//brings all the products
http://mywebsite.com/products 
4

1 回答 1

0

在 REST 中,URI 标识资源。在您编写时,识别资源的规范方法是

/products/{id}

由于您需要组合主键,我基本上看到两个选项。

使用两个路径段

你可以使用这样的模式:

/products/{key1}/{key2}

一起key1key2会识别产品。

这种方法的问题是key1可以解释为 "above" key2可能有类似的资源

/products/foo/bar

/products/foo/baz

wherekey1foo这两种情况下key2都是不同的。如果您的关键组件可以这样解释,我建议使用这种方法。

使用查询参数

如果要避免关键部分的顺序,可以使用查询参数。

/products?key1=foo&key2=bar

在这种方法中,key1key2没有特殊的顺序,没有一个是“高于”另一个。

这种方法的问题在于,像这样的 URL 通常被解释为过滤集合:返回所有产品 wherekey1=fookey2=bar. 但是您不要求(过滤的)集合,而是单个产品。

概括

如果您的关键组件不需要完全相等,我建议使用第一种方法。

于 2013-10-19T19:24:33.247 回答