Tipos de entrada de las acciones
Una definición es una lista de name:Type separados por comas, por ejemplo *email:Email, age:Number. Un * antes del nombre hace el campo obligatorio. El mismo formato se usa en input (el cuerpo), params, query y output. El tipo convierte el valor: la acción recibe el valor convertido, no el texto que se envió.
Los nombres de los tipos no distinguen mayúsculas de minúsculas. Cada tipo de abajo se comprobó enviando el valor de la segunda columna.
| Tipo | Valor enviado | Valor recibido | Notas |
|---|---|---|---|
String | hello | hello | Texto; se eliminan los espacios al principio y al final. |
Text | text | text | Texto conservado exactamente como se envió. |
Email | A@B.CZ | a@b.cz | Una dirección de correo válida, en minúsculas; cualquier otra cosa se rechaza. |
Phone | +421 900 123 456 | +421900123456 | Un número de teléfono; se eliminan los espacios. |
URL | https://totaljs.com/x | https://totaljs.com/x | Una URL válida; cualquier otra cosa se rechaza. |
Name | john smith | John Smith | Pone en mayúscula cada palabra. |
Capitalize | hello big world | Hello Big World | Pone en mayúscula cada palabra. |
Capitalize2 | HELLO big WORLD | Hello big world | Pone en mayúscula solo la primera letra y el resto en minúsculas. |
Lowercase | ABC | abc | Minúsculas. |
Uppercase | abc | ABC | Mayúsculas. |
Search | Žluťoučký Kůň | zlutoucki kun | Minúsculas sin acentos, para buscar. |
SafeString | plain text | plain text | Texto; un valor con etiquetas HTML como <b> se rechaza. |
Color | #FF0000 | #FF0000 | schema-enums-and-formats |
Base64 | SGVsbG8= | SGVsbG8= | schema-enums-and-formats |
Zip | 81101 | 81101 | schema-enums-and-formats |
Icon | ti ti-home | ti ti-home | schema-enums-and-formats |
Number | 12.5 | 12.5 | Un número; el texto se convierte. |
Float | 3.14 | 3.14 | Un número; el texto se convierte. |
Decimal | 2.5 | 2.5 | Un número; el texto se convierte. |
Boolean | true | true | true o false; el texto true se convierte. |
Date | 2026-01-05 | 2026-01-05T00:00:00.000Z | Una fecha. En JSON se envía como texto ISO. |
Otras formas:
| Forma | Ejemplo | Notas |
|---|---|---|
[String], [Number] | ze_arr:[String] | Un array de ese tipo: cada elemento se convierte. |
{ x:Number, y:String } | zg_obj:{ x:Number, y:String } | Un objeto anidado, validado con sus propios campos. |
String(5) | zd_max:String(5) | Un texto de como máximo 5 caracteres; un texto más largo se rechaza. |
Un valor que no encaja con el tipo se rechaza con el estado 400 y el nombre del campo en el error. Estos valores se rechazaron en las comprobaciones: SafeString con <b>x</b>, String(5) con diez caracteres, un UID con abc y un GUID con not-guid. La receta de límites verifica Int, SmallInt, TinyInt, Number2: numeric-schema-boundaries. En esta versión Int no trunca: 7.9 se queda en 7.9.
UID y GUID aceptan los valores que crean UID() y GUID().
NEWACTION('Types/all', {
name: 'Every type',
input: 'a_string:String, b_text:Text, c_email:Email, d_phone:Phone, e_url:URL, f_name:Name, g_capitalize:Capitalize, h_capitalize2:Capitalize2, i_lowercase:Lowercase, j_uppercase:Uppercase, k_search:Search, l_safestring:SafeString, m_color:Color, n_base64:Base64, o_zip:Zip, p_icon:Icon, q_number:Number, r_float:Float, s_decimal:Decimal, t_boolean:Boolean, u_date:Date, ze_arr:[String], zf_nums:[Number], zg_obj:{ x:Number, y:String }, zd_max:String(5)',
action: function($, model) {
$.callback(model);
}
});
NEWACTION('Types/ids', {
name: 'UID and GUID',
input: '*id:UID, *key:GUID',
action: function($, model) {
$.callback(model);
}
});exports.install = function() {
ROUTE('POST /types/ @json --> *Types/all');
ROUTE('POST /ids/ @json --> *Types/ids');
ROUTE('GET /newids/', ids);
};
function ids($) {
$.json({ id: UID(), key: GUID() });
}