json-server:不匹配路由的默认JSON

时间:2018-08-09 05:33:19

标签: json-server

我想用路由 / api / login /:userName /:password 伪造一个登录API,该路由在<td>[[ message ]]</td> 或{{1}的情况下将返回{ "success": false, "userName": "", "password": "" }在数据库中找不到}。如何使用json-server实现此目标?

到目前为止,我有此数据库JSON:

userName

invalidLogin当前未使用,应该用于具有未知password{ "login": [ { "success": true, "userName": "zaphod", "password": "galaxy" } ], "invalidLogin": [ { "success": false, "userName": "", "password": "" } ] } 的每条登录路由。

这是我的 server.js

userName

1 个答案:

答案 0 :(得分:0)

您可以使用router.render函数来实现以下目的:

router.render = (req, res, next) => {
  if (req.path === '/login') {
    if (res.locals.data.length !== 0) {
      res.jsonp(res.locals.data);
    } else {
      res.jsonp([
        { "success": false, "userName": "", "password": "" }
      ])
    }
  } else {
    res.jsonp(res.locals.data);
  }
}

基本上,此路由器代码将检查对/login/.../...的响应是否为非空,然后在空登录请求时将其替换为错误JSON。您可以进一步升级该模拟程序的逻辑。

可以将上述代码放置在 server.js 中的重写规则之后(您的代码中有一个小错误,您必须使用apireference issue来编写) :

server.use('/api', jsonServer.rewriter({
   "/login/:userName/:password": "/login?userName=:userName&password=:password",
}))