我想用路由 / 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
答案 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 中的重写规则之后(您的代码中有一个小错误,您必须使用api
,reference issue来编写) :
server.use('/api', jsonServer.rewriter({
"/login/:userName/:password": "/login?userName=:userName&password=:password",
}))