[英]Time Out in Api rest Express Nodejs
我想把我的 api 超時。 我在創建服務器時嘗試以“全局”方式放置它,但答案只說沒有返回數據,而不是 504 錯誤。 我也可以選擇為每條路線放置它,我認為超時應該放在我的應用程序的控制器中。
function initialize() {
return new Promise((resolve, reject) => {
const app = express();
httpServer = http.createServer(app);
app.use(morgan('combined'));
app.use('/proyecto', router_proyecto);
app.use('/tramitacion',router_tramitacion);
httpServer.listen(webServerConfig.port, err => {
if (err) {
reject(err);
return;
}
//httpServer.timeout = 500;
console.log('Servidor web escuchando en puerto:'+webServerConfig.port);
resolve();
});
});
}
路線示例:
router_proyecto.route('/getProyecto/:proyid?')
.get(proyecto.getProyecto);
控制器(超時應該在這里):
async function getProyecto(req, res, next) {
try {
const context = {};
context.proyid = parseInt(req.params.proyid, 10);
const rows = await proyectos.getProyecto_BD(context);
if (rows.length >0) {
res.status(200).json(rows);
} else {
res.status(404).end();
}
} catch (err) {
next(err);
}
}
module.exports.getProyecto = getProyecto;
“超時”對你來說意味着什么? 因為 aa timeout 在 Javascript 中是一個定義明確的術語,您的服務器絕對不應該使用它。 如果您希望您的服務器根據某個全局標志簡單地使用特定的 HTTP 代碼提供一些內容,那么您走在正確的軌道上,除非您需要將其編寫為中間件。
let lock = Date.now();
function serveLockContent(req, res, next) {
if (lock <= Date.now()) {
return next();
}
res.status(503).write('Server unavailable');
}
...
app.use(serveLockContent);
...
app.post('/lock/:seconds', verifyAuth, otherMiddlerware, (req, res) => {
lock = Date.now() + (parseInt(req.params.howlong) || 0) * 1000;
res.write('locked');
});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.