设计RESTful API端点过滤器并搜索

时间:2016-05-19 20:40:34

标签: api rest loopbackjs

我正在开发一些自定义API端点(使用loopback.io),在其现有的CRUD端点之上。

过去我曾使用其他一些Node RESTful API框架进行原型设计,并且非常喜欢它们开箱即用的强大过滤功能。

我想要做的是为自定义端点提供类似的某种过滤(或子集)。端点只执行SQL查询(带有一些JOIN)并返回一个对象数组。

我应该使用哪种标准化方法来设计一些过滤?例如,我可能想要过滤基表的字段,或过滤关系。我喜欢loopback.io和sequelize的方式允许相对简单的includes规范来链接相关对象,以及它们的过滤语法。

自定义实现完成后,通常会如何处理此类问题?

1 个答案:

答案 0 :(得分:0)

正如您可能注意到CRUD端点,LoopBack通过querying参数提供了filter开箱即用的功能。你可以在API Explorer中很好地试验它。如果您要公开自定义remote method的查询,只需将过滤器添加为参数。

示例-model.js

module.exports = ExampleModel => {
  const search = async (filter = {}) => {
    return await ExampleModel.find(filter)
  }

  ExampleModel.remoteMethod('search', {
    description: 'Returns a set of ExampleModel based on provided query.',
    accepts: [
      {arg: 'filter', type: 'object', required: false}
    ],
    http: {path: '/search', verb: 'get'},
    returns: {root: true}
  })

  ExampleModel.search = search
}