2011-12-08 22 views
1

我设计一个REST API的搜索功能,看起来是这样的:如何在设计RESTful API时正确暴露布尔搜索函数?

http://example.com/books/?author=John+Smith&title=Brain+Surgery+For+Dummies

看着这个URI,我不立刻知道这两个查询客户正在执行:

a)约翰史密斯的所有书籍,以及题为“脑部手术假人”的所有书籍

b)由约翰史密斯创作的所有版本的“脑部手术傻瓜”。

如何重新设计我的URI以使其更加明确?

回答

1

当我从例子 “作者” 理解为一种资源:

http://example.com/books/authors/John+Smith 

OR

http://example.com/books/authors/john-smith 

搜索书的作者的书收集

http://example.com/books/authors/John+Smith?title=Brain+Surgery+For+Dummies 

OR

http://example.com/books/authors/john-smith?title=Brain+Surgery+For+Dummies 

搜索图书的藏书:

http://example.com/books?title=Brain+Surgery+For+Dummies 

在这两种情况下搜索是指书的确切名称/标题不知道和搜索都不可能返回多个项目,虽然其本身特定的书是资源太。在这种情况下,你需要定义的URI书:

图书资源:

http://example.com/books/brain-surgery-for-dummies