Crea un error HTTP per a Deno

Bloc

Crea un error HTTP per a Deno

Crea un error HTTP per a Deno

http_errors

Crea un error HTTP per a Deno, inspirat en http_errors .

INCENDI

import { createError, HttpError, IError, Props } from 'https://deno.land/x/http_errors/mod.ts';

createError (estat: número, missatge ?: cadena, accessoris ?: Accessoris): HttpError

createError (error: Error, puntals ?: Accessoris): IError

createError (estat: número, accessoris: Accessoris): HttpError

Creeu un objecte d'error nou amb el codi d'estat, el missatge i les propietats personalitzades. L'objecte d'error hereta de HttpError.

const err = createError(404, 'Not found LoL!')
  • name: NotFoundError - Nom de l'error.
  • status: 404 - el codi d'estat com a número.
  • message - el missatge de l'error, per defecte a Text del codi d’estat de Deno .
  • expose: true - es pot utilitzar per indicar si s'ha d'enviar missatge al client, quan status >= 400 && status <500 és cert, en cas contrari fals. Es pot sobreescriure amb Props.
  • properties - propietats personalitzades per adjuntar a l'objecte d'error.

HttpError

HttpError és una classe abstracta que no es pot utilitzar per crear instàncies.

new HttpError(404) // Error! Cannot create an instance of an abstract class. createError(500) instanceof HttpError // true createError(500) instanceof Error // true

Exemples

Controlador d'error Http simple

Aquest senzill exemple mostra com utilitzar http_errors per retornar un cos de resposta diferent basat en un error HTTP diferent.

import { serve, Response, } from 'https://deno.land/std/http/server.ts'; import { createError, HttpError } from 'https://deno.land/x/http_errors/mod.ts'; const server = serve('127.0.0.1:3000'); console.log('Server listening on: 3000'); for await (const req of server) { const res: Response = { body: 'Hello!', headers: new Headers(), }; try { if (req.url === '/4xx') { throw createError(403); } else if (req.url === '/5xx') { throw Error('DB error!'); } } catch (e) { if (e instanceof HttpError && e.expose) { res.body = JSON.stringify(e.toJSON()); res.status = e.status; console.warn(e); } else { const err = createError(500); res.body = JSON.stringify(err.toJSON()); res.status = err.status; console.error(e); } res.headers?.set('Content-Type', 'applicatoin/json'); } finally { req.respond(res).catch(() => {}); } }

Podeu provar-ho amb el programa cURL:

curl -I -H'Accept: text/html' http://localhost:3000/4xx curl -I -H'Accept: text/html' http://localhost:3000/5xx

Detalls de la descàrrega:

Autor: ako-deno

Codi font: https://github.com/ako-deno/http_errors

#deno #nodejs #node #javascript