Saltar al contenido
Meeko
Escribe para buscar en las guías y en la referencia de la API. Ábrela desde cualquier página con / o Ctrl K; muévete con las flechas y entra con Intro.
Empezar

Contenidos

En esta página

ApiFormOptions

interfaz Desde 1.7.0

Opciones de un endpoint que acepta formularios HTML nativos con form (desde 1.7): un <form method="post"> que funciona sin JavaScript, enviado como application/x-www-form-urlencoded o multipart/form-data.

ts
import type { ApiFormOptions } from "@meekojs/meeko/server";

Código fuente src/server/api/contracts.ts:53

Declaración #

ts
interface ApiFormOptions<Result = unknown, S = unknown> {
	readonly redirect?: (result: Result, context: RequestContext<S>) => string | Promise<string>
	readonly maxBytes?: number
	readonly files?: boolean
	readonly echo?: readonly string[]
}

Parámetros de tipo #

Result = unknown

Lo que recibe redirect: la respuesta validada con response, undefined con status: 204 o el Response del handler con contentType: "response".

S = unknown

Tipo de los servicios.

Ejemplo #

ts
// server/api/feedback.post.ts
import { defineApiRoute } from "@meekojs/meeko/server";
import { feedbackInput, feedbackSaved } from "../../shared/schemas/feedback.js";
import { saveFeedback } from "../utils/feedback.js";

export default defineApiRoute({
  body: feedbackInput,
  response: feedbackSaved,
  // Tras un error, el comentario vuelve a la página; ningún otro valor.
  form: { redirect: (saved) => `/gracias?id=${saved.id}`, echo: ["comment"] },
  handler: ({ body }) => saveFeedback(body),
});

Propiedades #

redirect #

propiedad sólo lectura opcional

readonly redirect?: (result: Result, context: RequestContext<S>) => string | Promise<string>

Ruta de esta aplicación a la que vuelve un envío correcto con 303 See Other, como /gracias. Sin ella, la del campo return del formulario, la de Referer o /. Una ruta de otro origen, con //, \ o un esquema se sustituye por /.

maxBytes #

propiedad sólo lectura opcional

readonly maxBytes?: number

Tamaño máximo del cuerpo en bytes; por defecto 1 MiB, como el JSON. Por encima, BODY_TOO_LARGE.

files #

propiedad sólo lectura opcional

readonly files?: boolean

Con true, un multipart/form-data puede traer archivos, que llegan al schema de body como File. Sin él, un archivo responde FILES_NOT_ALLOWED (400).

echo #

propiedad sólo lectura opcional

readonly echo?: readonly string[]

Campos cuyo valor enviado vuelve a la página tras un envío con errores, para que el SSR los pinte de nuevo, como ["name", "email"]. Por defecto ninguno: sólo vuelven el código y los issues, y los campos muestran initial. Los valores viajan en una cookie de un solo uso y en el HTML de la página, así que no incluyas contraseñas, números de tarjeta ni otros datos sensibles; aun así, los nombres que parecen credenciales (password, token, secret, cvc…) nunca se devuelven. Sólo vuelven texto, números y booleanos, nunca archivos.

Véase también #

¿Te sirvió esta página?

Añadir un comentario

Se envía al elegir «Sí» o «No». Solo se guardan la página, tu respuesta y el comentario: ni cookies ni datos tuyos.

0 de 2000 caracteres

Editar en GitHub: packages/meeko/src/server/api/contracts.ts