Usando dados validados
Parte da seção APIs REST do Journey de Node.js da Coddy. Lição 8 de 25.
Um esquema pode retornar dados validados ou informações sobre um problema. safeParse retorna um objeto cujo campo success informa qual dos casos ocorreu. Em caso de sucesso, data contém o valor validado.
const result = Book.safeParse(body);
if (result.success) {
return result.data;
}
return {error: 'Invalid book'};As regras podem transformar valores, além de rejeitá-los. z.string().trim() remove os espaços ao redor. Salve os dados validados para manter essa alteração. Salvar o corpo original faria os espaços indesejados voltarem. O esquema fornecido já tem suas regras.
trim() remove os espaços ao redor. O min(1) a seguir exige pelo menos um caractere, então um título que contenha apenas espaços falha.
Desafio
FácilEste é um pequeno projeto de prática. A configuração já está pronta; edite apenas exercise.js.
Use o esquema Task fornecido. Retorne {"ok":true,"title":...} com o título sem espaços extras no início e no fim em caso de sucesso, ou {"ok":false} em caso de falha. Enviar POST {"title":" Read "} para /result retorna {"ok":true,"title":"Read"}. Um título com o valor 42 retorna {"ok":false}.
Experimente também {"title":" "}: deve retornar {"ok":false}.
A chamada inicial GET /result usa o exemplo fornecido {"title": " Read "}. Use POST /result com um corpo JSON para testar outras entradas.
Experimente você mesmo
import { z } from 'zod';
const Task = z.object({ title: z.string().trim().min(1) });
export function exercise(body) {
return { ok: true, title: body.title };
}
Todas as lições de APIs REST
1Recursos e verbos
Recursos e URLsCriando com POST4Navegadores, versões e configuração
O que é uma origemPermitindo outra origemCORSUma página que chama a API2Validação e erros
Validando a entradaPratique por conta própria: Playground de Express