# Enums und String-Format Validierung Grenzen

> Führen Sie positive und negative Compakt-Schema-Checks für Enums, Color, Base64, Zip, Icon, JSON und IP-Formate.

Framework: total5
Product: Total.js 5 (total5@0.0.19)
Language: de
Content-SHA256: f61d0d433f5ea89226cd59a42e143627ba926d13ad756b38687a0137ad74186b
Snapshot: c0700e321579725c5cf4f5ace1ad7d2866d1b4f93c24a63c0b41b6b7998e976c
Sources: total5-installed@total5@0.0.19
Review: not-recorded

Kompakte Enums verwenden `status:{draft|published}` (auch ein Semikolon trennt die Auswahlmöglichkeiten). Der String wird vor der exakten, groß-/kleinschreibungssensitiven Mitgliedschaftsprüfung getrimmt. Ein erforderliches Enum lehnt einen ausgelassenen oder leeren Wert ab. Verschachtelte Objekte verwenden `{name:Type}`; sie sind keine Enum-Deklarationen.

In `total5@0.0.19` akzeptiert `Color` hexadezimal `#RGB`, `#RRGGBB` und `#RRGGBBAA`; CSS-Farbnamen werden nicht akzeptiert. `Icon` validiert ein Klassennamenmuster, nicht das Vorhandensein des Icon-Assets. `Base64` und `Zip` verwenden die Validatoren des Frameworks: Die Akzeptanz eines Formats ist keine Inhaltsprüfung. Im Kompaktschema-Parser dieser Version sind **`JSON` und `IP` keine erkannten Subtypen und fallen auf einfache Strings zurück**. Fehlerhaftes JSON und ungültiger IP-Text werden akzeptiert. Das explizite JSON-Schema unten setzt native `subtype`-Werte, um diese Prüfungen zu aktivieren; es parst keinen JSON-String zu einem Objekt. Verwende `SafeString` nicht anstelle gebundener SQL-Parameter oder Ausgabe-Escapings.

```js controllers/formats.js
var schema = NEWSCHEMA('FormatBoundaries', '*status:{draft|published},*color:Color,*blob:Base64,*zip:Zip,*icon:Icon,*document:JSON,*address:IP');
var explicit = Total.newjsonschema('ExplicitFormats', { $id: 'ExplicitFormats', type: 'object', required: ['document','address'], properties: { document: { type: 'string', subtype: 'json' }, address: { type: 'string', subtype: 'ip' } } });
exports.install = function() {
	ROUTE('POST /explicit/ @json', function($) {
		var result = explicit.transform($.body);
		if (result.error) { $.response.status = 400; $.json({ error: 'invalid format' }); }
		else $.json(result.response);
	});
	ROUTE('POST /formats/ @json', formats);
};
function formats($) {
	var result = schema.transform($.body);
	if (result.error) {
		$.response.status = 400;
		$.json({ error: 'invalid format' });
	} else
		$.json(result.response);
}
```
