Menu
@dexcode/types
Resposta da API
Formato padrão das respostas das APIs DexCode, com o dado retornado e o resultado da validação.
Importação
ts
import type { DefaultResponse } from "@dexcode/types";Uso
ts
import type { DefaultResponse } from "@dexcode/types";
type Usuario = { id: string; nome: string };
const response: DefaultResponse<Usuario[]> = await fetch("/api/usuarios").then((r) => r.json());
if (response.validationResult.isValid) {
response.data.forEach((usuario) => console.log(usuario.nome));
} else {
response.validationResult.errors.forEach((erro) => console.log(erro.errorMessage));
}exemplo de JSON
{
"statusCode": 400,
"data": null,
"validationResult": {
"isValid": false,
"errors": [{ "errorMessage": "O e-mail é obrigatório." }],
"ruleSetsExecuted": null
}
}DefaultResponse<T>
ts
interface DefaultResponse<T> {
statusCode: number;
data: T;
validationResult: ValidationResult;
}| Prop | Tipo | Padrão | Descrição |
|---|---|---|---|
| statusCode* | number | — | Status HTTP da resposta. |
| data* | T | — | Dado retornado. O tipo é o que você passa em T. |
| validationResult* | ValidationResult | — | Resultado da validação feita pela API. |
Se a API puder devolver data: null (como no JSON de erro acima), deixe isso explícito no tipo: DefaultResponse<Usuario | null>.
validationResult
Os tipos internos ValidationResult e ErrorMessage não são exportados. Se precisar deles, pegue a partir do DefaultResponse:
ts
type ValidationResult = DefaultResponse<unknown>["validationResult"];
type ErrorMessage = ValidationResult["errors"][number];ts
interface ValidationResult {
isValid: boolean;
errors: ErrorMessage[];
ruleSetsExecuted: string[] | null | undefined;
}| Prop | Tipo | Padrão | Descrição |
|---|---|---|---|
| isValid* | boolean | — | Se a requisição passou na validação. |
| errors* | ErrorMessage[] | — | Erros encontrados. Vazio quando válido. |
| ruleSetsExecuted* | string[] | null | undefined | — | Conjuntos de regras de validação executados. |
validationResult.errors
ts
interface ErrorMessage {
errorMessage: string;
}