Coder Social home page Coder Social logo

learning-fastify's Introduction

learning-fastify

this projet is just for learnig and testing

Tratamento de error:

add this code on folder utils

// add this code on folder utils
export default class AppError extends Error {
  public readonly statusCode: number

  constructor(message: string, statusCode: number = 400) {
    super(message) // Chama o construtor da classe Error com a mensagem fornecida. Isso garante que a propriedade message do erro seja definida.
    this.statusCode = statusCode // Define a propriedade statusCode da instância AppError com o valor fornecido.
    Object.setPrototypeOf(this, new.target.prototype) // isso restaura a cadeia de protótipos, que pode ser quebrada quando estendendo classes nativas como Error. Isso é necessário para garantir que a instância seja do tipo correto (instanceof AppError funcionará como esperado).
}

add in folder Middleware a onErrorHook.ts

// add in folder Middleware a onErrorHook.ts

import { FastifyInstance, HookHandlerDoneFunction } from 'fastify'
import AppError from '../utils/serverError'

export default function onErrorHook(app: FastifyInstance): void {
  app.addHook( // Isso adiciona um gancho de erro ao aplicativo Fastify. O gancho de erro é chamado sempre que ocorre um erro durante o processamento de uma requisição.
    'onError',
    (request, reply, error, done: HookHandlerDoneFunction) => {

      if (error instanceof AppError) {
        reply.status(error.statusCode).send({ error: error.message })
      } 

      console.log('ERROR no servidor: ', error)
      reply.send(error)      
    }
  )
}

finally import onErrorHook and add fastfyInstance inside

// finally import onErrorHook and add fastfyInstance inside

const app = fastify()

onErrorHook(app)

Se não tiver erros durante o uma requisição no Fastify, o gancho onError que foi definido não será acionado.

A função addHook('onError', ...) é uma função de tratamento de erros, só é chamada quando um erro ocorre durante o ciclo de vida de uma requisição.

// pode ser usado dessa forma informando no primeiro a mensagem de erro e no seguindo parametro o status code

if (!name) {
  throw new AppError('Nome é obrigatório', 401)
}

learning-fastify's People

Watchers

Matheus Couto avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.