DexCode Packages
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;
}
PropTipoPadrãoDescriçã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;
}
PropTipoPadrãoDescriçã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;
}