rest-api-errors
    TypeScript icon, indicating that this package has built-in type declarations

    1.2.5 • Public • Published

    Rest Api Errors for Nodejs

    What is this?

    It's a set of errors that can be thrown to break a promise chain in a clean and logical way when creating APIs using NodeJS. I created it because I like promises and I like rest and I like simple. It also keeps me from having to remember the right http status codes to return for various errors.

    How do I use it?

    Here's an example of an endpoint to delete a Thang.

    // delete a thang
    app.delete('/thangs/:id', function (req, resp) {
    
        var username = req.user.username;
        var id = req.params.id;
    
        Thang.findOne({
            _id: id
        }).then(thang => {
            if (!thang) {
                // give em a 404 with custom error code and message
                throw new NotFoundError('thang_not_found', "I can't find that thang :(");
            } else if (thang.createdBy !== username) {
                // give em a generic 403
                throw new ForbiddenError();
            }
            // it's all good so actually delete the thang
            return Thang.deleteOne({
                _id: id
            });
    
        }).then(function () {
    
            resp.status(204).end();
    
        }).catch(function (err) {
    
            if(err instanceof ApiError) {
            
                // handle any ApiError with a simple elegant response
                resp.status(err.status).send({
                    code: err.code,
                    message: err.message
                });
            } else {
                // handle all other errors in some kinda way
                handleError(resp, err);
            }
        });
    };

    What errors are supported?

    All of following are implemented. Throw them to your hearts content.

    • 400 - BadRequest
    • 401 - Unauthorized
    • 402 - PaymentRequired
    • 403 - Forbidden
    • 404 - NotFound
    • 405 - MethodNotAllowed
    • 406 - NotAcceptable
    • 407 - ProxyAuthenticationRequired
    • 408 - RequestTimeout
    • 409 - Conflict
    • 410 - Gone
    • 411 - LengthRequired
    • 412 - PreconditionFailed
    • 413 - RequestEntityTooLarge
    • 414 - RequestUriTooLong
    • 415 - UnsupportedMediaType
    • 416 - RequestedRangeNotSatisfiable
    • 417 - ExpectationFailed
    • 418 - IAmATeapot
    • 420 - EnhanceYourCalm
    • 422 - UnprocessableEntity
    • 423 - Locked
    • 424 - FailedDependency
    • 426 - UpgradeRequired
    • 428 - PreconditionRequired
    • 429 - TooManyRequests
    • 431 - RequestHeaderFieldsTooLarge
    • 444 - NoResponse
    • 449 - RetryWith
    • 450 - BlockedbyWindowsParentalControls
    • 499 - ClientClosedRequest
    • 500 - InternalServerError
    • 501 - NotImplemented
    • 502 - BadGateway
    • 503 - ServiceUnavailable
    • 504 - GatewayTimeout
    • 505 - HTTPVersionNotSupported
    • 506 - VariantAlsoNegotiates
    • 507 - InsufficientStorage
    • 508 - LoopDetected
    • 509 - BandwidthLimitExceeded
    • 510 - NotExtended
    • 511 - NetworkAuthenticationRequired
    • 598 - NetworkReadTimeout
    • 599 - NetworkConnectTimeout

    Install

    npm i rest-api-errors

    DownloadsWeekly Downloads

    240

    Version

    1.2.5

    License

    MIT

    Unpacked Size

    12.4 kB

    Total Files

    5

    Last publish

    Collaborators

    • blakgeek