Les types d'entrée de la nouvelle
Une définition est une liste de name:Type séparés par des virgules, par exemple *email:Email, age:Number. Un * avant le nom rend le champ obligatoire. Le même format est utilisé par input (le corps), params, query et output. Le type convertit la valeur : l'action reçoit la valeur convertie, pas le texte envoyé.
Les noms des types ne sont pas sensibles à la casse. Chaque type ci-dessous a été vérifié en envoyant la valeur de la deuxième colonne.
| Type | Valeur envoyée | Valeur reçue | Remarques |
|---|---|---|---|
String | hello | hello | Texte ; les espaces au début et à la fin sont supprimés. |
Text | text | text | Texte conservé exactement tel qu'il a été envoyé. |
Email | A@B.CZ | a@b.cz | Une adresse e-mail valide, en minuscules ; tout le reste est rejeté. |
Phone | +421 900 123 456 | +421900123456 | Un numéro de téléphone ; les espaces sont supprimés. |
URL | https://totaljs.com/x | https://totaljs.com/x | Une URL valide ; tout le reste est rejeté. |
Name | john smith | John Smith | Met chaque mot en majuscule initiale. |
Capitalize | hello big world | Hello Big World | Met chaque mot en majuscule initiale. |
Capitalize2 | HELLO big WORLD | Hello big world | Met seulement la première lettre en majuscule et le reste en minuscules. |
Lowercase | ABC | abc | Minuscules. |
Uppercase | abc | ABC | Majuscules. |
Search | Žluťoučký Kůň | zlutoucki kun | Minuscules sans accents, pour la recherche. |
SafeString | plain text | plain text | Texte ; une valeur contenant des balises HTML comme <b> est rejetée. |
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 nombre ; le texte est converti. |
Float | 3.14 | 3.14 | Un nombre ; le texte est converti. |
Decimal | 2.5 | 2.5 | Un nombre ; le texte est converti. |
Boolean | true | true | true ou false ; le texte true est converti. |
Date | 2026-01-05 | 2026-01-05T00:00:00.000Z | Une date. En JSON, elle est envoyée sous forme de texte ISO. |
Autres formes :
| Forme | Exemple | Remarques |
|---|---|---|
[String], [Number] | ze_arr:[String] | Un tableau de ce type : chaque élément est converti. |
{ x:Number, y:String } | zg_obj:{ x:Number, y:String } | Un objet imbriqué, validé avec ses propres champs. |
String(5) | zd_max:String(5) | Un texte d'au plus 5 caractères ; un texte plus long est rejeté. |
Une valeur qui ne correspond pas au type est rejetée avec le statut 400 et le nom du champ dans l'erreur. Ces valeurs ont été rejetées lors des vérifications : SafeString avec <b>x</b>, String(5) avec dix caractères, un UID avec abc et un GUID avec not-guid. La recette des limites vérifie Int, SmallInt, TinyInt, Number2: numeric-schema-boundaries. Dans cette version, Int ne tronque pas : 7.9 reste 7.9.
UID et GUID acceptent les valeurs créées par UID() et 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() });
}