Skip to content
Meeko
Type to search the guides and the API reference. Open it from any page with / or Ctrl K; move with the arrow keys and open a result with Enter.
Get started

Contents

On this page

Not translated yet

This page has not been translated into English yet, so it is shown in Spanish.

ApiFormOptions

interfaz Since 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";

Source code 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[]
}

Type parameters #

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.

Example #

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.

See also #

Was this page helpful?

Add a comment

It is sent when you choose “Yes” or “No”. Only the page, your answer and the comment are stored: no cookies and no personal data.

0 of 2000 characters

Edit on GitHub: packages/meeko/src/server/api/contracts.ts