使用json-server模拟搜索过滤器

时间:2018-08-27 07:14:35

标签: json mocking json-server

我有routes.jsondb.json

路线

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

DB.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'}]
}

1 个答案:

答案 0 :(得分:1)

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

{
  "/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"
  }
]

其他docs on routing