Select Git revision
-
Sigmund, Dominik authoredSigmund, Dominik authored
index.js 1.90 KiB
// metaRoutes.js
function metaRoutes(app, { version, config, isServiceReady, metricsEndpoint }, routeOptions = {}) {
// Default options with all routes enabled
const defaults = {
enableVersion: true,
enableConfig: true,
enableHealth: true,
enableReady: true,
enableMetrics: true,
};
// Merge user provided options with defaults
const options = { ...defaults, ...routeOptions };
if (options.enableVersion) {
app.get('/_version', function (req, res) {
res.send(version);
});
}
if (options.enableConfig) {
app.get('/_config', function (req, res) {
res.send(config._show());
});
}
if (options.enableHealth) {
app.get('/_health', function (req, res) {
res.send('OK');
});
}
if (options.enableReady) {
app.get('/_ready', function (req, res) {
if (isServiceReady()) {
res.send('OK');
} else {
res.status(503).send('Not ready');
}
});
}
if (options.enableMetrics) {
app.get('/_metrics', metricsEndpoint);
}
}
module.exports = metaRoutes;
/**
* GET /_version
* @summary Returns the version of the service
* @tags meta
* @return {string} 200 - The version of the service
*/
/**
* GET /_config
* @summary Returns the configuration of the service with redacted secrets
* @tags meta
* @return {object} 200 - The configuration of the service
*/
/**
* GET /_health
* @summary Returns the health of the service
* @description This endpoint is used to check if the service is healthy and should always return 200
* @tags meta
* @return {string} 200 - OK
*/
/**
* GET /_ready
* @summary Returns the readiness of the service
* @description This endpoint is used to check if the service is ready and should return 200 if the service is ready to serve requests
* @tags meta
* @return {string} 200 - OK
* @return {string} 503 - Service Unavailable
*/