API Fastify e validazione
Nomi e metodi
src/server/api/health.get.ts diventa GET /api/health. Puoi usare i suffissi get, post, put, patch, delete, head e options. [name] crea un parametro dinamico; i file senza metodo restano helper e non sono registrati.
Crea un endpoint POST
import { defineApiRoute } from '@fastang/core';
export default defineApiRoute<{ Body: { text: string } }>({
schema: {
body: {
type: 'object', required: ['text'], additionalProperties: false,
properties: { text: { type: 'string', minLength: 1, maxLength: 120 } },
},
response: {
201: {
type: 'object', required: ['message'],
properties: { message: { type: 'string' } },
},
},
},
handler: async (request, reply) => reply.code(201).send({ message: request.body.text.trim() }),
});Prova la risposta
curl -i -X POST http://localhost:3278/api/messages \
-H 'content-type: application/json' \
-d '{"text":"Hello"}'{"message":"Hello"}. Un body senza text, una stringa vuota o un valore oltre 120 caratteri produce HTTP 400. Non affidarti soltanto ai tipi TypeScript per validare richieste esterne.
Usa Fastify
request e reply nativi: puoi leggere parametri e header o impostare lo stato. In src/server/plugins.ts registri plugin e hook condivisi. Il limite iniziale dei body è 1 MiB. Gli errori interni non espongono stack al client; le API inesistenti restituiscono JSON con HTTP 404.
src/server nei componenti Angular. Per condividere tipi usa un modulo senza dipendenze dal server e import di tipo quando possibile. Questa alpha non genera ancora un client API tipizzato per percorso.