In LoopBack, default error status response is :
{
"error":{
"statusCode":401,
"name":"Error",
"message":"Authorization Required",
"code":"AUTHORIZATION_REQUIRED",
"stack":"Error: Authorization Required\n at /var/www/project/loopback-mysql/node_modules/loopback/lib/application.js:430:21\n at /var/www/project/loopback-mysql/node_modules/loopback/lib/model.js:358:7\n at /var/www/project/loopback-mysql/node_modules/loopback/common/models/acl.js:529:16\n at /var/www/project/loopback-mysql/node_modules/async/dist/async.js:3888:9\n at /var/www/project/loopback-mysql/node_modules/async/dist/async.js:473:16\n at iteratorCallback (/var/www/project/loopback-mysql/node_modules/async/dist/async.js:1064:13)\n at /var/www/project/loopback-mysql/node_modules/async/dist/async.js:969:16\n at /var/www/project/loopback-mysql/node_modules/async/dist/async.js:3885:13\n at /var/www/project/loopback-mysql/node_modules/loopback/common/models/acl.js:511:17\n at /var/www/project/loopback-mysql/node_modules/loopback/common/models/role.js:434:21\n at process._tickCallback (internal/process/next_tick.js:61:11)"
}
}
Step-by-step guide:
Following steps involved to remove any index in default error response in loopback:
- Create middleware.json in server folder, if it is not already created.
- Default middleware.json is like this:
{
"initial:before": {
"loopback#favicon": {}
},
"initial": {
"compression": {},
"cors": {
"params": {
"origin": true,
"credentials": true,
"maxAge": 86400
}
}
},
"session": {},
"auth": {},
"parse": {},
"routes": {
"loopback#rest": {
"paths": [
"${restApiRoot}"
]
}
},
"files": {
"loopback#static": {
"params": "$!../client"
}
},
"final": {
"loopback#urlNotFound": {}
},
"final:after": {
"loopback#errorHandler": {}
}
}
3. Open middleware.json file and add the following code in “final:after” object.
"./middleware/error-logger": {},
4. Now the middleware.json code is like this:
{
"initial:before": {
"loopback#favicon": {}
},
"initial": {
"compression": {},
"cors": {
"params": {
"origin": true,
"credentials": true,
"maxAge": 86400
}
}
},
"session": {},
"auth": {},
"parse": {},
"routes": {
"loopback#rest": {
"paths": [
"${restApiRoot}"
]
}
},
"files": {
"loopback#static": {
"params": "$!../client"
}
},
"final": {
"loopback#urlNotFound": {}
},
"final:after": {
"./middleware/error-logger": {},
"loopback#errorHandler": {}
}
}
5. Now create the file error-logger.js in server/middleware.
6. Open the error-logger.js file and write the following code:
module.exports = function createErrorLogger(options) {
return function logError(err, req, res, next) {
delete err['details'];
delete err['stack'];
next(err);
};
};
In the above code, only remove details and stack index from the error response. Now the default error response is like this:
{
"error": {
"statusCode": 401,
"name": "Error",
"message": "Authorization Required",
"code": "AUTHORIZATION_REQUIRED"
}
}
Categories: