RFC-7807 for errors
- Langage dominant
- TypeScript
- Étoiles
- 46
- Forks
- 4
- Métriques de merge des PR
- Aucune PR mergée en 30 j
Description
In combination with `fastify.sensible`, make it easy to send well-formatted errors to clients, with actionable details for better DX.
Specification: https://tools.ietf.org/html/rfc7807
Copy-pasta from another project:
```ts
// https://tools.ietf.org/html/rfc7807
import { STATUS_CODES } from 'node:http'
import { z } from 'zod'
export const rfc7807Schema = z.object({
status: z
.number()
.int()
.refine(code => code in STATUS_CODES),
type: z.string().url().optional(), // Technically a URI, but let's not split hairs
title: z.string(),
detail: z.string().optional(),
instance: z.string().url().optional()
})
export type RFC7807 = z.TypeOf
export class RFC7807Error extends Error {
readonly rfc7807: RFC7807
constructor(args: RFC7807) {
super(
`${STATUS_CODES[args.status]}: ${args.title}${
args.detail ? ` (${args.detail})` : ''
}`
)
this.name = 'RFC7807Error'
this.rfc7807 = {
...args,
type: args.type ?? 'about:blank'
}
}
}
```
Guide de contribution
Aucun guide de contribution indexé pour ce dépôt
Piste de recherche
Look at the existing error handling in fastify-micro, likely in a plugin or middleware. Integrate the provided RFC7807 schema and error class, ensuring compatibility with fastify.sensible. Test by creating errors and verifying the response format matches the RFC.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Évaluation
- Stack technique
- nodejs, typescript
- Domaine
- api, backend
- Type d'issue
- Fonctionnalité
- Difficulté
- 3/5
- Temps estimé
- 1-2 jours
- Activité
- À l'abandon
- Clarté
- Plutôt claire
- Accessibilité débutants
- 45/100