Beachten Sie auch, dass, wenn ein Element kein Muster angibt, dann standardmäßig, dass das universelle Übereinstimmungsmuster zugeordnet – “/**” – also wieder, dieses Element muss zuletzt sein. Wenn die Reihenfolge der Elemente nicht korrekt ist, schlägt die Erstellung der Sicherheitsfilterkette fehl: Unsere offiziellen Sprachunterstützungspakete enthalten End-to-End-Beispiele für die Anwendungskonfiguration, die nach der Paketinstallation als Referenz unter /usr/share/doc/-modulname>/examples/ verfügbar sind. Die Dokumentation für ein Entwurfsmuster beschreibt den Kontext, in dem das Muster verwendet wird, die Kräfte innerhalb des Kontexts, den das Muster zu lösen sucht, und die vorgeschlagene Lösung. [24] Es gibt kein einheitliches Standardformat für die Dokumentation von Entwurfsmustern. Vielmehr wurden eine Vielzahl von verschiedenen Formaten von verschiedenen Musterautoren verwendet. Laut Martin Fowler sind bestimmte Musterformen jedoch bekannter geworden als andere und werden daher zu gemeinsamen Ausgangspunkten für neue Muster-Schreibbemühungen. [25] Ein Beispiel für ein häufig verwendetes Dokumentationsformat ist das von Erich Gamma, Richard Helm, Ralph Johnson und John Vlissides in ihrem Buch Design Patterns. Es enthält die folgenden Abschnitte: Unten ist ein Beispiel für dieses Muster in Java. Ein Logger wird mit einer Kette von Loggern erstellt, die jeweils mit unterschiedlichen Protokollebenen konfiguriert sind. Beachten Sie jedoch, dass der erste Befehl den gesamten Listener ersetzt und alle anderen Optionen, die Sie hätten konfigurieren können, fallen lässt, während der zweite Befehl nur den Passwert ersetzt und andere Optionen intakt lässt.
BeispieleUm Tippfehler und Aufwand zu minimieren, vermeiden Sie das Einbetten der JSON-Nutzlast in Ihre Befehle. Stattdessen sollten Sie Ihre Konfigurationsausschnitte zur Überprüfung und Wiederverwendung speichern. Angenommen, Sie speichern Ihr Anwendungsobjekt als wiki.json:- “type”: “python”, “module”: “wsgi”, “user”: “www-wiki”, “group”: “www-wiki”, “path”: “/www/wiki Verwenden Sie es, um eine Anwendung mit dem Namen wiki-prod einzurichten: – curl -X PUT –data-binary `/path/to/wiki.json `-unix-socket /path/to/control.unit.sock localhost/config/applications/wiki-prod Verwenden Sie es erneut, um eine Entwicklungsversion derselben App mit dem Namen wiki-dev einzurichten: curl –data-binary -/path/to/wiki.json –unix-socket /path/to/control.unit.sock localhost/config/applications/wiki-dev Die Wiki-dev localhost/config/applications/wiki-dev/path-App in ein anderes Quellcode-Verzeichnis umzuschalten: Erhöhen Sie die Prozessanzahl für die Produktions-App, um sie ein wenig aufzuwärmen: curl -X PUT -d `5` –unix-socket /to/control.unit.sock localhost/config/applications/wiki-prod/processes Hinzufügen eines Listeners für die Wiki-Prod-App, um Anfragen auf allen Host-IPs zu akzeptieren :-unix-socket /path/to/control.unit.sock `localhost/config/listeners/*:8400` Stecken Sie die Wiki-Dev-App in den Hörer, um sie zu testen: curl -X PUT -d `”applications/wiki-dev”` -. -unix-socket /path/to/control.unit.sock `localhost/config/listeners/*:8400/pass` Dann verdrahte den Listener neu, indem du der Entwicklungsversion der App eine URI-basierte Route hinzufügst: ` cat “ EOF > config.json [ ` “match”: ` “uri”: “/dev/*” “action”: “pass”: “pass”: “applications/wiki-dev” – ] EOF -curl -X PUT –data-binary @config.json –unix-socket –unix-socket –path/to/control.unit.sock localhost/config/routes -x PUT -d `”routes”` –unix-socket –path/to/control.unit.sock `localhost /config/listeners/*:8400/pass` Als nächstes ändern wir das URI-Präfix des Wiki-dev im Routen-Array unter Verwendung seines Indexes (0): curl -X PUT -d `”/development/*”` –unix-socket=/path/to/control.unit.sock ` localhost/config/routes/0/match/uri Fügen wir der prod-App eine Route hinzu. : POST fügt immer zum Array-Ende hinzu, sodass kein Index erforderlich ist: –curl -X POST -d “match`::`uri`: “/production/*”`, “action`: `pass`: `applications/wiki-prod“` –unix-socket=/path/to/control.unit.s localhost/config/routes/ock Verwenden Sie PUT mit dem letzten Index des Arrays (0 in unserem Beispiel) plus einen, um das neue Element am Ende hinzuzufügen: –unix-socket=/path/to/control.unit.sock – localhost/config/routes/1/ Um den vollständigen Konfigurationsabschnitt zu erhalten: – curl –unix-socket /path/to/control.unit.sock localhost/config/ ” “listeners”: “*:8400”: “pass”: “routes” “applications”: “wiki-dev”: “type”: “python”, “module”: “wsgi”, “user”: “www-wiki”, “group”: “www-wiki”, “path”: “/www/wiki-dev/” prod:: “type”: “python”, “processes”: 5, “module”: “wsgi”, “user”: “www-wiki”, “group”: “www-wiki”, “path”: “/www/wiki/” : [ – “match”: “uri”: “/development/*” , “action”: “pass”: “applications/wiki-dev” , ” action”: “pass”: “applications/wiki-prod”