All Projects → tsedio → ts-httpexceptions

tsedio / ts-httpexceptions

Licence: MIT license
🚦 See https://tsed.io/docs/exceptions.html

Programming Languages

typescript
32286 projects

Projects that are alternatives of or similar to ts-httpexceptions

simple http server
simple http server for upload and download
Stars: ✭ 101 (+320.83%)
Mutual labels:  http-server
Mgx
🌈 A high performance network framework written in c++ (support tcp and http)
Stars: ✭ 15 (-37.5%)
Mutual labels:  http-server
http-live-simulator
A simple HTTP Server that serves with random delay for live simulation
Stars: ✭ 58 (+141.67%)
Mutual labels:  http-server
stream video server
demonstrates how to create video streaming server with the help of aiohttp and opencv
Stars: ✭ 15 (-37.5%)
Mutual labels:  http-server
ZiAPI
The elected Zia API for {Epitech} promo 2024 (Paris and Marseille)
Stars: ✭ 29 (+20.83%)
Mutual labels:  http-server
instant api
Instantly create an HTTP API with automatic type conversions, JSON RPC, and a Swagger UI. Just add methods!
Stars: ✭ 115 (+379.17%)
Mutual labels:  http-server
dummyhttp
Super simple HTTP server that replies a fixed body with a fixed response code
Stars: ✭ 25 (+4.17%)
Mutual labels:  http-server
go-fileserver
A simple HTTP Server to share files over WiFi via Qr Code
Stars: ✭ 68 (+183.33%)
Mutual labels:  http-server
http-graceful-shutdown
Gracefully terminates HTTP servers in Node.js
Stars: ✭ 79 (+229.17%)
Mutual labels:  http-server
crash
Proper error handling, exceptions and try/catch for ZSH
Stars: ✭ 51 (+112.5%)
Mutual labels:  exceptions
zenith
⚡ Functional Scala HTTP server, client, and toolkit.
Stars: ✭ 15 (-37.5%)
Mutual labels:  http-server
NETMF-Toolkit
The .NET Micro Framework Toolkit (using Microsoft .NET Micro Framework)
Stars: ✭ 13 (-45.83%)
Mutual labels:  http-server
malloy
A C++ library providing embeddable server & client components for both HTTP and WebSocket.
Stars: ✭ 29 (+20.83%)
Mutual labels:  http-server
aiohttp-json-rpc
Implements JSON-RPC 2.0 using aiohttp
Stars: ✭ 54 (+125%)
Mutual labels:  http-server
foxy
Session-based Beast/Asio wrapper requiring C++14
Stars: ✭ 61 (+154.17%)
Mutual labels:  http-server
http-server-static-content
Static content / file serving for Amp's HTTP server.
Stars: ✭ 19 (-20.83%)
Mutual labels:  http-server
bittyhttp
A threaded HTTP library for building REST services in C.
Stars: ✭ 12 (-50%)
Mutual labels:  http-server
vos whatsapp
vangav open source - whatsapp; generated using vangav backend:
Stars: ✭ 14 (-41.67%)
Mutual labels:  exceptions
DataXServer
为DataX(https://github.com/alibaba/DataX) 提供远程多语言调用(ThriftServer,HttpServer) 分布式运行(DataX on YARN) 功能
Stars: ✭ 130 (+441.67%)
Mutual labels:  http-server
http-accept
Parse Accept and Accept-Language HTTP headers in Ruby.
Stars: ✭ 69 (+187.5%)
Mutual labels:  http-server

ts-httpexceptions

This repository is archived. The source code is now available on https://github.com/TypedProject/tsed/tree/production/packages/exceptions repository

See documentation on https://tsed.io.

Installation

npm install @tsed/exceptions

Features

Some HTTP Exceptions are already implemented :

Redirections (3xx):

  • MovedPermanently,
  • MovedTemporarily,
  • MultipleChoices,
  • NotModified,
  • PermanentRedirect,
  • SeeOther,
  • TemporaryRedirect,
  • TooManyRedirects,
  • UseProxy.

Client errors (4xx) :

  • BadMapping,
  • BadRequest,
  • Conflict,
  • ExpectationFailed,
  • Forbidden,
  • Gone,
  • ImATeapot,
  • LengthRequired,
  • MethodNotAllowed,
  • MisdirectedRequest,
  • NotAcceptable,
  • NotFound,
  • PaymentRequired,
  • PreconditionFailed,
  • PreconditionRequired,
  • ProxyAuthentificationRequired,
  • RequestedRandeUnsatifiable,
  • RequestTimeout,
  • RequestURITooLong,
  • TooManyRequests,
  • Unauthorized,
  • UnavailabledForLegalReasons,
  • UnsupportedMediaType,
  • UpgradeRequired.

Server errors (5xx) :

  • BadGateway,
  • BandwidthLimitExceeded,
  • GatewayTimeout,
  • InternalServerError,
  • NetworkAuthenticationRequired,
  • NotExtended,
  • NotImplemented,
  • ProxyError,
  • ServiceUnvailable,
  • VariantAlsoNegotiates.

You can use HTTPExceptions method to throw a custom Exception.

API

import {BadRequest, Exception, NotFound} from 'ts-httpexceptions';
const express = require('express');
const app = express();

app.get('/my/route/:id', async (req, res, next) => {
 if (req.params.id === undefined) {
   const error = new BadRequest("ID is required")
   
   // Additionally
   error.headers = {
     'x-header': 'value'
   }
   error.errors = [{'message': "ID is required"}]
   error.body = [{'message': "ID is required"}]
   
   next(error);
 }
 
 try {
   const user = await getUser(res.params.id)
   res.json(user);
 } catch(origin) {
   next(new NotFound('User not found',  origin))
 }
});


//GlobalHandler middleware catch exception and send response to the client
app.use((err, request, response, next) => {
 if(err instanceof Exception) {
   if (err.errors) { // If errors is provided
     response.set({'x-errors': JSON.stringify(err.errors)})
   }
   
   if (err.headers) {
     response.set(err.headers)
   }
   
   if (err.body) { // If a body is provided
     return response.status(err.status).json(err.body)
   }
   
   return response.status(err.status).send(err.message);
 }
 
 next()
});

Contributors

Please read contributing guidelines here.

Backers

Thank you to all our backers! 🙏 [Become a backer]

Sponsors

Support this project by becoming a sponsor. Your logo will show up here with a link to your website. [Become a sponsor]

License

The MIT License (MIT)

Copyright (c) 2016 - 2020 Ts.ED

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].