Generierung von Client APIs mit Swagger Teil 3
Im dritten Teil der Serie integrieren wir den Swagger API-Client in eine React Native App mit Auth0-Authentifizierung und Expo.
Also available in English at Medium.com.
In diesem Blog-Post stellen wir die Client-Generierung von Swagger vor, zeigen, wie man die generierte API in React-Anwendungen verwendet und wie man das Authentifizierungs-Token von Auth0 integriert.

Der Einfachheit halber wird dieses Thema in eine dreiteilige Serie aufgeteilt:
- Teil 1: Integration von Swagger in Spring Boot, Generierung des API-Clients und Verwendung als Teil einer React-Web-App
- Teil 2: Sicherung der Endpunkte mit Auth0 und Autorisierung der Anfragen der Web-Clients
- Teil 3: Verwendung des generierten API-Clients als Teil einer React Native App.
Verwendung des generierten API-Clients als Teil einer React Native App
Im letzten Teil dieser Blogpost-Serie integrieren wir unseren Swagger API-Client in eine React Native App. Dieser Teil baut auf den beiden vorherigen Teilen der Reihe auf, lesen Sie diese also bitte als Vorbereitung auf diesen Teil. Das heutige Ziel ist die Implementierung einer React Native App, welche die Projekte darstellt, die wir in unserer React Web-Anwendung verwalten.

TL;DR In diesem Teil müssen wir viel Konfiguration durchführen. Aus diesem Grund funktioniert ein TL;DR hier leider nicht. Um möglichst schnell zu einem Ergebnis zu kommen, können Sie sich aber auf die ersten beiden Schritte beschränken und anschließend unsere Beispiel-App verwenden.
Schritt 1) Einen Expo-Account erstellen
Expo ist ein Wrapper für React Native Apps und erleichtert uns den gesamten Entwicklungsprozess, inklusive Dependency-Management sowie Build- und Deployment-Verwaltung.
- Besuchen Sie https://expo.io und erstellen Sie einen neuen Account.
- Installieren Sie die Expo CLI.
- Erstellen Sie ein neues Projekt, indem Sie den Befehl
expo initin einem leeren Ordner ausfühern. - Veröffentlichen Sie Ihr Projekt auf Expo, indem Sie den Befehl
expo publishausführen. Dadurch sollte eine Projekt-Seite ähnlich wie unsere erstellt werden.
Schritt 2) Erstellen und Konfigurieren einer Auth0-Anwendung
- Erstellen Sie in Auth0 eine neue Native Anwendung für den bestehenden Mandanten: Applications -> Create Application -> Native
- Fügen Sie die Authentication-URL des Expo-Projekts zur Liste der erlaubten Callback-URLs hinzu (z.B. https://auth.expo.io/@miragon/miragon-example-app) und speichern Sie die Änderungen, indem Sie auf den Button am Ende der Seite klicken.
- Aktivieren Sie die Username-Passwort-Authentifizierung, indem Sie in den Einstellungen des Mandanten unter General die API Authorization Settings auf “Username-Passwort-Authentication” setzen.
Schritt 3) Konfigurieren der React Native App
Wenn Sie lieber die Beispielanwendung verwenden wollen, klonen Sie unsere Beispiel-App, fügen Sie die folgenden Umgebungsvariablen in Ihre Run-Konfiguration ein und starten Sie die Anwendung mit dem Befehl expo start:
AUTH0_DOMAIN=<YOUR_DOMAIN> (e.g. https://miragon-example-tenant.eu.auth0.com/authorize);
AUTH0_CLIENT_ID=<YOUR_CLIENT_ID> (e.g. yXu7nsklfU495Hgsdg51p0age9dC)
Sie werden merken, dass wir den Authentication-Flow von Auth0 verwenden, welcher den Benutzer auf die Login-Seite von Auth0 weiterleitet und nach dem Eingeben der korrekten Zugangsdaten zurück in die App leitet. Die Logik dafür ist in der Datei constants/Auth.tsx enthalten und funktioniert wie folgt:
Zuerst werden die Zugangsdaten des Nutzers verwendet, um einen langlebigen Token zu erhalten, der 30 Tage lang gültig bleibt. Dieser langlebige Token wird dann verwendet, um einen kurzlebigen Access Token anzufragen. In unseren Apps speichern wir den langlebigen Token im sicheren Expo-Speicher auf dem lokalen Gerät, um einen neuen Access Token anzufragen, sobald der vorherige abgelaufen ist. Aus diesem Grund müssen unsere Nutzer sich nicht bei jedem Öffnen der Anwendung neu anmelden. Für mehr Informationen dazu können Sie auch diesen Artikel lesen.
Um den Code frei von Abhängigkeiten auf unsere eigenen Auth0-Domains und Clients zu halten, speichern wir diese in Umgebungsvariablen mithilfe der Bibliothek expo-constants. Dazu haben wir die folgende Konfiguration in der Datei app.config.js:
import app_config from "./app.json"
export default {
...app_config.expo,
extra: {
auth0ClientId: process.env.AUTH0_CLIENT_ID,
auth0Domain: process.env.AUTH0_DOMAIN,
},
};
Wie Sie sehen können, wird die Datei app.json erweitert. In dieser Datei stehen alle Konfigurationsparameter für Expo. Um Auth0 in Ihrer Expo-App zu verwenden, müssen Sie sicherstellen, dass die Felder “owner” Ihren Accountnamen und “scheme” einen vorzugsweise eindeutigen Shortcut enthält. Dieser wird für den Protokoll-Teil der Redirect-URL verwendet, mit der die App nach einem erfolgreichen Login wieder geöffnet wird (bspw. mea://...). Unten sehen Sie unsere app.json-Datei:
{
"expo": {
"name": "miragon-example-app",
"slug": "miragon-example-app",
"scheme": "mea",
"owner": "miragon",
...
}
Im letzten Schritt müssen Sie noch die Dependency react-native-polyfill/auto hinzufügen und Sie in Ihrer App.tsx importieren. Das ist notwendig, um ein Problem mit Axios Fetch zu beheben. Mehr Informationen sind hier zu finden.
Schritt 4) Integrieren der API
Nachdem React Native apps auf React aufbauen, können wir denselben Ansatz wiederverwenden, den wir schon im vorherigen Teil der Serie verwendet haben, um unsere React-Webanwendung aufzusetzen.
Das war’s auch schon! Viel Spaß mit diesem production-ready Ansatz basierend auf Spring Boot, Swagger, Auth0, React und React Native!
Fandest du den Artikel interessant?
Abonniere unseren Newsletter und erhalte neue Beiträge direkt ins Postfach.
Das könnte dich auch interessieren
Ähnliche Beiträge aus unseren Insights
Agent-Skills: Wie AI auch in Nischen-Domänen wie BPMN & Prozessautomatisierung zuverlässig wird
AI macht Routine-Coding austauschbar – doch in Nischen-Domänen wie der Prozessautomatisierung mit BPMN und Zeebe liefern reine Prompts inkonsistente Ergebnisse. Wie Agent-Skills Domänenwissen kodieren und AI auch hier zuverlässig machen.
Warum ich jede npm-Dependency pinne: eine kleine Gewohnheit, die ein kompromittiertes Paket übersteht
Eine kurze Reflexion darüber, warum sich der Mehraufwand beim Upgrade lohnt, wenn du npm-Dependencies pinnst – und wie eine kleine CI-Guardrail dafür sorgt, dass die Praxis im Team auch Bestand hat.
Leveling up! Wie du die Herausforderung verteilter Transaktionen in Zeebe lösen kannst
Ein umfassender Guide zu verteilten Transaktionen in Zeebe: Von Phantom-Instanzen über das Outbox Pattern bis hin zu Idempotenz und SAGA.
Innerhalb eines Tages weißt du, wo du stehst.
Kein Verkaufsgespräch, sondern eine ehrliche Einschätzung, ob und wie Automatisierung dir hilft.
Erstgespräch vereinbarenKein Commitment. Kein Pitch-Deck. Nur Klarheit.