使用复合主键形成资源的URI

时间:2013-10-18 16:24:22

标签: rest uri

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

在我看来,典型案例是:

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

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

1 个答案:

答案 0 :(得分:0)

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

/products/{id}

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

使用两个路径段

你可以使用这样的模式:

/products/{key1}/{key2}

key1key2将共同识别产品。

这种方法的问题是key1可以被解释为“高于”key2可能

之类的资源
/products/foo/bar

/products/foo/baz

其中key1foo key2,但/products?key1=foo&key2=bar 不同。如果您的关键组件可以这样解释,我建议使用这种方法。

使用查询参数

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

key1

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

此方法存在的问题是,此类网址通常被解释为已过滤的集合:返回key2=bar和{{1}}的所有产品。但是你不要求(过滤的)集合而是单个产品。

摘要

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