
Spring Cloud Gateway Repository, das die Ausnutzung von CVE-2022-22947 für API-Sicherheitstests und Schwachstellenanalyse demonstriert.
//// BEARBEITEN SIE DIESE DATEI NICHT. SIE WURDE GENERIERT. Manuelle Änderungen an dieser Datei gehen verloren, wenn sie erneut generiert wird. Bearbeiten Sie stattdessen die Dateien im Verzeichnis src/main/asciidoc/. ////
image::https://circleci.com/gh/spring-cloud/spring-cloud-gateway/tree/master.svg?style=svg["CircleCI", link="https://circleci.com/gh/spring-cloud/spring-cloud-gateway/tree/master"] image::https://codecov.io/gh/spring-cloud/spring-cloud-gateway/branch/master/graph/badge.svg["Codecov", link="https://codecov.io/gh/spring-cloud/spring-cloud-gateway/branch/master"] image::https://api.codacy.com/project/badge/Grade/a6885a06921e4f72a0df0b7aabd6d118["Codacy code quality", link="https://www.codacy.com/app/spring-cloud/spring-cloud-gateway?utm_source=github.com&utm_medium=referral&utm_content=spring-cloud/spring-cloud-gateway&utm_campaign=Badge_Grade"]
Dieses Projekt bietet ein API-Gateway, das auf dem Spring-Ökosystem aufbaut, einschließlich: Spring 5, Spring Boot 2 und Project Reactor. Spring Cloud Gateway zielt darauf ab, eine einfache und dennoch effektive Möglichkeit zu bieten, APIs zu routen und Querschnittsbelange wie Sicherheit, Überwachung/Metriken und Ausfallsicherheit bereitzustellen.
== Funktionen
DiscoveryClient zur Konfiguration von Routen== Erstellen
:jdkversion: 1.8
=== Grundlegende Kompilierung und Tests
Um die Quelle zu erstellen, müssen Sie JDK {jdkversion} installieren.
Spring Cloud verwendet Maven für die meisten buildbezogenen Aktivitäten, und Sie sollten in der Lage sein, schnell zu beginnen, indem Sie das gewünschte Projekt klonen und Folgendes eingeben:
HINWEIS: Sie können auch Maven (>=3.3.3) selbst installieren und den Befehl mvn anstelle von ./mvnw in den folgenden Beispielen verwenden. Wenn Sie das tun, müssen Sie möglicherweise auch -P spring hinzufügen, wenn Ihre lokalen Maven-Einstellungen keine Repository-Deklarationen für Spring-Vorabversion-Artefakte enthalten.
HINWEIS: Beachten Sie, dass Sie möglicherweise den von Maven verfügbaren Speicher erhöhen müssen, indem Sie eine MAVEN_OPTS-Umgebungsvariable mit einem Wert wie -Xmx512m -XX:MaxPermSize=128m setzen. Wir versuchen, dies in der .mvn-Konfiguration abzudecken. Wenn Sie feststellen, dass Sie dies tun müssen, um einen Build erfolgreich abzuschließen, reichen Sie bitte ein Ticket ein, damit die Einstellungen zur Quellcodeverwaltung hinzugefügt werden.
Die Projekte, die Middleware (z. B. Redis) für Tests benötigen, erfordern in der Regel, dass eine lokale Instanz von Docker installiert und ausgeführt wird.
=== Dokumentation
Das spring-cloud-build-Modul hat ein 'docs'-Profil, und wenn Sie es aktivieren, wird es versuchen, AsciiDoc-Quellen aus src/main/asciidoc zu erstellen. Im Rahmen dieses Prozesses wird nach einer README.adoc gesucht und diese verarbeitet, indem alle Includes geladen werden, aber nicht analysiert oder gerendert, sondern nur nach ${main.basedir} kopiert (standardmäßig ${basedir}, d. h. das Wurzelverzeichnis des Projekts). Wenn es Änderungen in der README gibt, erscheint diese nach einem Maven-Build als geänderte Datei an der richtigen Stelle. Committen Sie sie einfach und pushen Sie die Änderung.
=== Arbeiten mit dem Code Wenn Sie keine IDE-Präferenz haben, empfehlen wir die Verwendung von https://www.springsource.com/developer/sts[Spring Tools Suite] oder https://eclipse.org[Eclipse] beim Arbeiten mit dem Code. Wir verwenden das https://eclipse.org/m2e/[m2eclipse] Eclipse-Plugin für die Maven-Unterstützung. Andere IDEs und Tools sollten ebenfalls problemlos funktionieren, solange sie Maven 3.3.3 oder besser verwenden.
==== Aktivieren des Spring-Maven-Profils Spring Cloud-Projekte erfordern die Aktivierung des 'spring'-Maven-Profils, um die Spring-Milestone- und Snapshot-Repositories aufzulösen. Verwenden Sie Ihre bevorzugte IDE, um dieses Profil zu aktivieren, andernfalls können Build-Fehler auftreten.
==== Importieren in Eclipse mit m2eclipse Wir empfehlen das https://eclipse.org/m2e/[m2eclipse] Eclipse-Plugin für die Arbeit mit Eclipse. Wenn Sie m2eclipse noch nicht installiert haben, ist es im 'Eclipse Marketplace' verfügbar.
HINWEIS: Ältere Versionen von m2e unterstützen Maven 3.3 nicht, daher müssen Sie m2eclipse nach dem Import der Projekte in Eclipse mitteilen, das richtige Profil für die Projekte zu verwenden. Wenn Sie viele verschiedene Fehler im Zusammenhang mit den POMs in den Projekten sehen, überprüfen Sie, ob Sie eine aktuelle Installation haben. Wenn Sie m2e nicht aktualisieren können, fügen Sie das 'spring'-Profil in Ihre settings.xml ein. Alternativ können Sie die Repository-Einstellungen aus dem 'spring'-Profil des übergeordneten POM in Ihre settings.xml kopieren.
==== Importieren in Eclipse ohne m2eclipse Wenn Sie m2eclipse nicht verwenden möchten, können Sie Eclipse-Projektmetadaten mit dem folgenden Befehl generieren:
$ ./mvnw eclipse:eclipse
Die generierten Eclipse-Projekte können importiert werden, indem Sie im Datei-Menü Vorhandene Projekte importieren auswählen.
== Mitwirken
:spring-cloud-build-branch: master
Spring Cloud wird unter der nicht restriktiven Apache 2.0-Lizenz veröffentlicht und folgt einem sehr standardmäßigen Github-Entwicklungsprozess, wobei Github Tracker für Issues und das Zusammenführen von Pull-Requests in den Master verwendet werden. Wenn Sie auch nur etwas Triviales beitragen möchten, zögern Sie nicht, aber folgen Sie den untenstehenden Richtlinien.
=== Unterzeichnen der Contributor License Agreement Bevor wir einen nicht-trivialen Patch oder Pull-Request akzeptieren, müssen Sie die https://cla.pivotal.io/sign/spring[Contributor License Agreement] unterzeichnen. Die Unterzeichnung der Contributor-Vereinbarung gewährt niemandem Commit-Rechte auf das Haupt-Repository, bedeutet jedoch, dass wir Ihre Beiträge akzeptieren können und Sie eine Autoren-Gutschrift erhalten, wenn wir dies tun. Aktive Mitwirkende könnten gebeten werden, dem Kernteam beizutreten und die Möglichkeit erhalten, Pull-Requests zusammenzuführen.
=== Verhaltenskodex Dieses Projekt hält sich an den Contributor Covenant https://github.com/spring-cloud/spring-cloud-build/blob/master/docs/src/main/asciidoc/code-of-conduct.adoc[Code of Conduct]. Durch Ihre Teilnahme wird von Ihnen erwartet, diesen Kodex einzuhalten. Bitte melden Sie inakzeptables Verhalten an [email protected].
=== Code-Konventionen und -Pflege Keine davon ist für einen Pull-Request unbedingt erforderlich, aber sie helfen alle. Sie können auch nach dem ursprünglichen Pull-Request, aber vor einem Merge hinzugefügt werden.