1

我有routes.jsondb.json

路线

  "/api/*/_search?*=:searchstring": "/$1/?$2_like=:searchstring",
  "/api/*": "/$1"

数据库.json

 {
  "cats": {
    "cats": []
  },
  "bats": [],
  "recordList": {
    "records": [
      {id:1, name: 'abc'},
      {id:2, name: 'def'},
      {id:3, name: 'ghi'}
    ]
  }
}

使用上述配置获取记录列表绝对没问题。

需要了解如何模拟下面的搜索过滤器调用:

http:localhost:3001/api/_search?name=abc

将路线更新为:

{
  "/api/*": "/$1",
  "/api/_search?name_like": "/$1"
}

按照此链接:https ://github.com/typicode/json-server/issues/654#issuecomment-339098881

但是没有点击定义的配置 URL,我做错了什么?我在这里错过了什么吗?搜索词是动态的,因此传递的值应该只能从变量中接受,但在注释中它是静态的。如果有人遇到类似问题并已解决,请提供帮助

如果搜索“abc”,它应该返回

{
  records: [{id: 1, name: 'abc'}]
}
4

1 回答 1

6

您需要像这样编写搜索路线:

{
  "/api/records/_search?name=:searchstring": "/records/?name_like=:searchstring"
}

或者更好的是,您可以使用替换进行参数化*$1因此您将能够在查询、任何数据集records或其他中搜索任何参数:

{
  "/api/*/_search?*=:searchstring": "/$1/?$2_like=:searchstring",
  "/api/*": "/$1"
}

之后您的请求http://localhost:3001/api/records/_search?name=ab将得到响应:

[
  {
    "id": 1,
    "name": "abc"
  }
]

有关路由的其他文档。

于 2018-08-27T08:03:08.553 回答