[JAVA] Verbinden Sie Spring Boot und Angular typsicher mit OpenAPI Generator

Dieser Artikel ist eine aktualisierte Version der folgenden vorherigen Artikel. Verbinden von Spring Boot und Angular2 mit typsicher

Es war ein Problem

Ich hatte Angst, dass das Web-Backend und das Web-Frontend lose mit JSON kommunizieren. Ich wollte während des Builds so viele Probleme wie möglich erkennen. Ich wollte typsicher wie RPC kommunizieren können.

Verschiedene Versions-Upgrades von der vorherigen Konfiguration

Alt Neu
Sprache des Backends Java8 Java11
backend framework Spring Boot 1 Spring Boot 2
frontend framework Angular5 Angular7
Tool zur Codegenerierung Swagger Codegen OpenAPI Generator

OpenAPI Generator und Swagger Codegen sind Tools, die Clientcode und Server-Stub-Code basierend auf den REST-API-Spezifikationen generieren. Leider ist der Betrieb von Swagger Codegen? Der OpenAPI-Generator wurde geboren, nachdem er von einem Top-Mitarbeiter gegabelt wurde. Derzeit hat OpenAPI Generator mehr Commits und Mitwirkende. Dieses Mal wechselte ich zu OpenAPI Generator.

Was ich gemacht habe

Dies ist ein Vorlagenprojekt. https://github.com/chibat/spring-openapi-angular-starter

Projektstruktur

Die OpenAPI Spec-Datei wird automatisch von SpringFox generiert und muss nicht manuell erstellt werden.

Entwicklungsfluss

Nehmen wir als Beispiel eine einfache Zusatz-App, die im Vorlagenprojekt enthalten ist.

1. Erstellen eines Web-Backends

Web-Backends werden mit Spring Boot erstellt. Es ist eine Controller-Klasse, die einfach zwei Ganzzahlen in einer Anforderung empfängt, diese hinzufügt und antwortet.

package app.backend.web;

import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RestController;
import io.swagger.annotations.ApiOperation;
import lombok.Data;
import lombok.Value;

@RestController
public class CalculatorController {

    @PostMapping("/rest/api/add")
    @ApiOperation(value = "", tags = "calculator", nickname = "add")
    public Response add(@RequestBody final Request request) {
        return new Response(request.getArg1() + request.getArg2());
    }

    @Data
    public static class Request {
        private Integer arg1;
        private Integer arg2;
    }

    @Value
    public static class Response {
        private final Integer result;
    }
}

Es ist zu beachten, dass die ApiOperation-Annotation den Klassennamen des Clients verwendet, der die durch Tags angegebene Zeichenfolge und die durch den Kurznamen angegebene Zeichenfolge als Methodennamen generiert. Außerdem wird der Spitzname als operationId von OpenAPI Spec behandelt und scheint nutzlos zu sein, es sei denn, er ist insgesamt eindeutig.

2. Generierung des Web-Front-End-Client-Codes

Führt Gradle-Aufgaben aus und generiert Client-Code.

$ cd backend
$ ./gradlew openApiGenerate

Der Test wird ausgeführt und die von SpringFox ausgegebenen API-Spezifikationen werden in eine Datei ausgegeben. OpenAPI Generator liest die Datei und generiert den Clientcode.

Die Abhängigkeit von SpringFox dient nur zu Testzwecken und erhöht die Größe der Anwendung zur Laufzeit nicht.

3. Erstellen eines Web-Frontends

Web-Frontends werden in Angular erstellt. Erstellen Sie eine Komponentenklasse, die den generierten Clientcode verwendet. CalculatorService ist eine automatisch generierte Klasse.

import { Component } from '@angular/core';
import { CalculatorService } from './client/api/calculator.service';

@Component({
  selector: 'app-root',
  templateUrl: './app.component.html',
  styleUrls: ['./app.component.css']
})
export class AppComponent {

  arg1: number;
  arg2: number;
  result: number;

  constructor(private  calculatorService: CalculatorService) {
  }

  add() {
    if (this.arg1 || this.arg2) {
      this.calculatorService
        .add({arg1: this.arg1, arg2: this.arg2})
        .subscribe(data => this.result = data.result);
    }
  }
}

Zusammenfassung

OpenAPI Generator Gut. Der generierte Winkelcode ist auch gut. Wie oben erwähnt, genießen Sie bitte ein komfortables, sicheres Leben.

Das E-Book von OpenAPI Generator ist jetzt im Verkauf! (Hinzugefügt am 2019-09-19)

Ein E-Book von OpenAPI Generator wurde veröffentlicht. Wenn Sie interessiert sind, warum nicht kaufen?

Einführung in die Codegenerierung für die REST-API (OpenAPI Generator)

Recommended Posts

Verbinden Sie Spring Boot und Angular typsicher mit OpenAPI Generator
Stellen Sie mit spring boot + spring jpa eine Verbindung zur Datenbank her und führen Sie die CRUD-Operation durch
HTTPS mit Spring Boot und Let's Encrypt
Mit Spring Boot herunterladen
Versuchen Sie es mit einem DI-Container mit Laravel und Spring Boot
Wechseln Sie die Umgebung mit Spring Boot application.properties und @ Profile-Annotation
Versuchen Sie, OpenID Connect mit Keycloak (Spring Boot-Anwendung) zu verwenden.
Verwendungshinweis zu Spring Security: Zusammenarbeit mit Spring MVC und Boot
Spring Boot mit Spring Security Filter-Einstellungen und Suchtpunkten
Versuch, SSR Vue.js mit Spring Boot und GraalJS zu verwenden
Generieren Sie mit Spring Boot einen Barcode
Hallo Welt mit Spring Boot
Implementieren Sie GraphQL mit Spring Boot
Hallo Welt mit Spring Boot!
Führen Sie LIFF mit Spring Boot aus
SNS-Login mit Spring Boot
Datei-Upload mit Spring Boot
Spring Boot beginnt mit dem Kopieren
Spring Boot beginnend mit Docker
Hallo Welt mit Spring Boot
Setzen Sie Cookies mit Spring Boot
Verwenden Sie Spring JDBC mit Spring Boot
Modul mit Spring Boot hinzufügen
Erstellen Sie mit Spring Boot einen Mikrodienst
Behandeln Sie die Java 8-Datums- und Uhrzeit-API mit Thymeleaf mit Spring Boot
Implementieren Sie die REST-API mit Spring Boot und JPA (Application Layer).
Implementieren Sie die REST-API mit Spring Boot und JPA (Infrastructure Layer).
Bis INSERT und SELECT für Postgres mit Spring Boot und Thymianblatt
Implementieren Sie die REST-API mit Spring Boot und JPA (Domain Layer Edition).
Domänengesteuerte Entwicklung mit Java und Spring Boot-Layer und Modulabteilung
Einfache Entwicklung von Webanwendungen mit STS und Spring Boot. In 10 Minuten.
Verwenden Sie die Standardauthentifizierung mit Spring Boot
Einführung in Spring Boot x Offene API ~ Offene API, erstellt mit Generationslückenmuster ~
gRPC auf Spring Boot mit grpc-spring-boot-Starter
Erstellen Sie eine App mit Spring Boot 2
Hot Deploy mit Spring Boot-Entwicklung
Datenbankverknüpfung mit doma2 (Spring Boot)
Spring Boot Programmierung mit VS Code
Erstellen Sie eine Anfrage-App mit Spring Boot
Erhalten Sie Validierungsergebnisse mit Spring Boot
Vergleiche Hallo Welt! Mit Spring Boot mit Java, Kotlin und Groovy
(Intellij) Hallo Welt mit Spring Boot
Erstellen Sie eine App mit Spring Boot
Spring-Profilfunktion und Spring Boot application.properties
Google Cloud Platform mit Spring Boot 2.0.0
[Java] LINE-Integration mit Spring Boot
Stellen Sie sich die Spring Boot-App mit dem Jib-Maven-Plugin vor und starten Sie sie mit Docker
Beginnend mit Spring Boot 0. Verwenden Sie Spring CLI
Ich habe Flyway mit Spring Boot ausprobiert
Die Nachrichtenkooperation begann mit Spring Boot
Implementierungsmethode für Multi-Datenquelle mit Spring Boot (Mybatis und Spring Data JPA)
Verarbeitung beim Starten einer Anwendung mit Spring Boot
Feder mit Kotorin --2 RestController und Datenklasse
Hallo Welt mit Eclipse + Spring Boot + Maven
Senden Sie regelmäßige Benachrichtigungen mit LineNotify + Spring Boot
Führen Sie einen Transaktionsbestätigungstest mit Spring Boot durch
Versuchen Sie es mit Spring Boot mit VS-Code
Starten Sie die Nginx + Spring Boot-Anwendung mit Docker-Compose
Ich habe Lazy Initialization mit Spring Boot 2.2.0 ausprobiert