Minifier — API-Dokumentation

Zurück zum Minifier

Übersicht

Diese Seite dokumentiert die öffentlichen Minifier-APIs unter /api/public/*. Diese Endpunkte akzeptieren JSON-POST-Bodies und geben bei Erfolg oder Fehler einen BaseResponse-JSON-Envelope zurück. ZIP-Download-Endpunkte geben bei Erfolg application/zip und bei Fehlern JSON BaseResponse.

{
  "serverTime": 0,
  "errorMessage": null,
  "payload": { /* ... */ }
}

Öffentliche Routen erfordern keine Anti-Forgery-Tokens. Wenn Sie aus der UI innerhalb dieser Anwendung integrieren, existieren geschützte UI-Routen unter /api/*, die nur für die Nutzung im Browser vorgesehen sind.

Öffentliche Endpunkte

  • POST /api/public/css-minifier/minify — CSS-Minimierung (JSON)
  • POST /api/public/js-minifier/minify — JS-Minimierung (JSON)
  • POST /api/public/css-minifier/download-zip — gibt ZIP mit styles.min.css zurück
  • POST /api/public/js-minifier/download-zip — gibt ZIP mit scripts.min.js zurück

CSS-Minimierung

POST JSON an /api/public/css-minifier/minify. Das Request-Modell ist im Beispiel gezeigt.

{
  "InputCss": "...",
  "KeepImportantComments": true,
  "ColorNames": 0,
  "AbbreviateHexColor": true,
  "MinifyExpressions": true,
  "CssType": 0,
  "RemoveEmptyBlocks": true,
  "FixIE8Fonts": true,
  "DecodeEscapes": true,
  "ExcludeVendorPrefixes": ["ms","webkit"]
}

Bei Erfolg enthält payload outputCss, Größen und optional errors/warnings. Im Fehlerfall gibt der Server einen Nicht-2xx-Status zurück und setzt errorMessage, während payload null ist.

JS-Minimierung

POST JSON an /api/public/js-minifier/minify. Das Request-Modell unterstützt viele erweiterte Optionen, die den NUglify CodeSettings entsprechen. Ein minimales Beispiel ist gezeigt.

{
  "InputJs": "console.log('hello');",
  "MinifyCode": true,
  "EvalTreatment": 0,
  "InlineSafeStrings": true,
  "MacSafariQuirks": true,
  "PreserveImportantComments": true,
  "StripDebugStatements": true
}

Hinweis: Enum-Eigenschaften müssen als numerische Werte vom Client gesendet werden. Die UI stellt numerische Auswahllisten für diese bereit.

ZIP herunterladen

Sowohl CSS- als auch JS-ZIP-Endpunkte akzeptieren dieselben Payloads wie die entsprechenden Minify-Endpunkte und geben eine application/zip-Datei mit dem minimierten Artefakt zurück.

Im Fehlerfall geben ZIP-Endpunkte JSON BaseResponse mit gesetztem errorMessage und null payload zurück.

Erweiterte Einstellungen

Die UI bietet erweiterte Einstellungen für CSS und JS. Diese entsprechen direkt den NUglify-Einstellungen (siehe UI für Standardwerte). Die JS-Einstellungen verwenden standardmäßig die Werte von new CodeSettings().

cURL-Beispiele

Öffentliche Endpunkte erfordern kein Anti-Forgery-Token. Beispiel CSS- und JS-Minify sind gezeigt.

curl -X POST https://packly.yolosoft.net/api/public/css-minifier/minify \
  -H "Content-Type: application/json" \
  -d '{"InputCss":"body { color: red; }","KeepImportantComments":false,"ColorNames":0}'

Beispiel JS-Minify:

curl -X POST https://packly.yolosoft.net/api/public/js-minifier/minify \
  -H "Content-Type: application/json" \
  -d '{"InputJs":"console.log(1);","MinifyCode":true}'

UI (geschützte) Endpunkte erfordern den Anti-Forgery-Token-Header RequestVerificationToken.

Sicherheit / Hinweise

  • Maximale Eingabegröße: InputCss und InputJs sind auf 1.048.576 Bytes (1 MiB) begrenzt (UTF-8-Byte-Anzahl).
  • Enum-Werte: Enum-Eigenschaften müssen gültige numerische Werte sein (z. B. EvalTreatment, Format, LocalRenaming, ScriptVersion, SourceMode).
  • Vendor-Prefix-Limits: ExcludeVendorPrefixes unterstützt bis zu 50 Einträge und jeder Eintrag darf nicht leer sein und höchstens 64 Zeichen lang sein.
  • Große JS-Felder: RenamePairs, NoAutoRenameList, KnownGlobalNamesList und DebugLookupList sind auf 65.536 Zeichen begrenzt.
  • RenamePairs-Format: muss kommaseparierte source=target-Paare sein (z. B. longName=a, other=b).
  • ZIP-Fehlerverhalten: bei Fehlern geben ZIP-Endpunkte JSON mit gesetztem errorMessage zurück; Clients sollten die Antwort prüfen, wenn der HTTP-Status Nicht-2xx ist.
  • Produktionsempfehlung: öffentliche Endpunkte sind nicht authentifiziert — erwägen Sie Rate-Limiting, API-Schlüssel oder Quoten beim öffentlichen Aussetzen.

Nutzungsdetails

Antworten verwenden den BaseResponse-Envelope. Überprüfen Sie den HTTP-Status und lesen Sie dann errorMessage (string) und payload (object) um den Erfolg zu bestimmen.

{ "serverTime": 1676496000, "errorMessage": null, "payload": { /* minify result */ } }

Im Fehlerfall enthält der Envelope errorMessage und payload ist null. ZIP-Endpunkte geben bei Erfolg Binärdaten zurück; ist der Status Nicht-2xx, ist der Body ein JSON-Fehler-Envelope.