REST API:如何搜索其他属性

时间:2012-06-26 08:37:24

标签: api node.js rest express

我使用node.js作为REST API。 有以下可用的操作:

  1. / contacts,GET,查找所有联系人
  2. / contacts,POST,创建新联系人
  3. / contacts /:id,GET,通过它的id
  4. 显示或获取特定联系人
  5. / contacts /:id,PUT,更新特定联系人
  6. / contacts /:id,DELETE,删除特定联系人
  7. 现在什么是用户搜索,查询的逻辑路径? 我应该把它放到3.路线上还是应该创建一条额外的路线?

3 个答案:

答案 0 :(得分:2)

我相信你会在这个问题上得到很多不同的意见。就个人而言,我会看到“搜索”过滤“所有联系人”给出:

GET / contacts?filter = your_filter_statement

你可能已经在GET / contacts上有过滤参数,以允许分页符合filter-statement。

编辑: 用它来解析你的查询字符串:

var url = require('url');

并在你的处理程序中('request'是你的nodejs http-request对象):

var parsedUrl = url.parse(request.url, true);
var filterStatement = parsedUrl.query.filter;

答案 1 :(得分:1)

有趣的问题。这是我多次的讨论。

我认为没有一个明确的答案,或者可能有,我只是不知道或不同意。我会说你应该添加一条新路线: / contacts / _search 在联系人列表上执行操作,在这种情况下是搜索。明确并定义您的工作。

答案 2 :(得分:-1)

GET /contacts找到所有联系人。您想要所有联系人的子集。 URI中的分隔符表示子集?不是 ”?”;这是非等级的。 “/”字符用于分隔分层路径段。因此,对于联系人的子集,请尝试使用/contacts/like/dave//contacts/by_name/susan/

的URI

按路径段对数据进行子集化的概念不仅仅是集合 - 它更广泛地适用。您的整个网站都是一个集合,每个顶级路径细分都定义了它的一个子集:http://yoursite.example/contactshttp://yoursite.example/的子集。它也适用范围更窄:/contacts/:id/contacts的子集,/contacts/:id/firstname/contacts/:id的子集。