0

我想使用路由/api/login/:userName/:password伪造登录 API ,{ "success": false, "userName": "", "password": "" }以防万一userNamepassword在数据库中找不到该路由。如何使用 json-server 实现这一点?

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

{
   "login": [
      { "success": true, "userName": "zaphod", "password": "galaxy" }
   ],
   "invalidLogin": [
      { "success": false, "userName": "", "password": "" }
   ]
}

invalidLogin 当前未使用,应用于每个带有未知userName或的登录路由password

这是我的server.js

const jsonServer = require('json-server');
const server = jsonServer.create();
const router = jsonServer.router('db.json');
const middlewares = jsonServer.defaults();

server.use(middlewares);

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

server.use('/api', router);

server.listen(3001, () => {
  console.log('JSON Server is running')
});
4

1 回答 1

1

您可以使用以下功能实现类似的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中重写规则之后(你的代码有一个小错误,你必须用api,参考 issue编写):

server.use('/api', jsonServer.rewriter({
   "/login/:userName/:password": "/login?userName=:userName&password=:password",
}))
于 2018-08-27T13:38:56.313 回答