如何让 json-server 在用作模块时延迟响应?
How to get json-server, when used as module, to delay responses?
json-server
允许通过命令行配置延迟响应:
json-server --port 4000 --delay 1000 db.json
当使用 json-server
作为模块时,如何尝试做到这一点?以下无效:
const jsonServer = require('json-server')
var server = jsonServer.create();
server.use(jsonServer.defaults());
server.use(jsonServer.router("db.json"));
server.use(function(req, res, next) {
setTimeout(next, 1000);
});
server.listen(4000);
它只是完全忽略setTimeout
函数而不执行它。
顺序很重要。中间件应该在路由器之前。如果您在 server.use(jsonServer.router("db.json"));
之前移动超时,它应该可以工作。
这是我的工作示例:
var app = jsonServer.create();
var router = jsonServer.router(path.join(__dirname, '../../test/api/dev.json'));
var middlewares = jsonServer.defaults();
app.use(function(req, res, next){
setTimeout(next, 10000);
});
app.use(middlewares);
app.use(router);
server = app.listen(3000, function () {
console.log('JSON Server is running on localhost:3000');
done();
});
json-server
允许通过命令行配置延迟响应:
json-server --port 4000 --delay 1000 db.json
当使用 json-server
作为模块时,如何尝试做到这一点?以下无效:
const jsonServer = require('json-server')
var server = jsonServer.create();
server.use(jsonServer.defaults());
server.use(jsonServer.router("db.json"));
server.use(function(req, res, next) {
setTimeout(next, 1000);
});
server.listen(4000);
它只是完全忽略setTimeout
函数而不执行它。
顺序很重要。中间件应该在路由器之前。如果您在 server.use(jsonServer.router("db.json"));
之前移动超时,它应该可以工作。
这是我的工作示例:
var app = jsonServer.create();
var router = jsonServer.router(path.join(__dirname, '../../test/api/dev.json'));
var middlewares = jsonServer.defaults();
app.use(function(req, res, next){
setTimeout(next, 10000);
});
app.use(middlewares);
app.use(router);
server = app.listen(3000, function () {
console.log('JSON Server is running on localhost:3000');
done();
});