1.3.1 • Published 2 years ago

rest-api-errors v1.3.1

Weekly downloads
225
License
MIT
Repository
github
Last release
2 years ago

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
1.3.1

2 years ago

1.3.0

2 years ago

1.2.5

4 years ago

1.2.4

5 years ago

1.2.3

5 years ago

1.2.2

5 years ago

1.2.1

9 years ago

1.2.0

10 years ago

1.1.5

10 years ago

1.1.4

10 years ago

1.1.3

10 years ago

1.1.2

10 years ago

1.1.1

10 years ago

1.1.0

10 years ago

1.0.0

10 years ago