suchen
HeimJavajavaLernprogrammWie SpringBoot GraphQL zur Entwicklung einer Web-API verwendet

Wie SpringBoot GraphQL zur Entwicklung einer Web-API verwendet

May 13, 2023 am 10:52 AM
apigraphqlspringboot

Vorwort

Die traditionelle Restful-API weist viele Probleme auf. Erstens kann sie die zurückgegebenen Felder nicht steuern und das Front-End kann die Rückgabeergebnisse des Back-Ends nicht vorhersagen führt zu mehreren Anfragen. GraphQL ist eine API-Abfragesprache, die auf diesem Hintergrund basiert. Im Vergleich zur herkömmlichen Restful-API bietet sie die folgenden Vorteile:

  • Flexibilität: GraphQL kann im Gegensatz zu RESTful Daten flexibel entsprechend den Anforderungen des Clients abfragen. strukturierte Daten.

  • Netzwerkanfragen reduzieren: GraphQL ermöglicht es Clients, mehrere Ressourcen in einer Anfrage abzurufen, was dazu beiträgt, die Anzahl der Netzwerkanfragen zu reduzieren und die Leistung zu verbessern.

  • Starke Typisierung: GraphQL verfügt über ein starkes Typisierungssystem, das es Clients ermöglicht, Fehler in Abfragen zur Kompilierungszeit zu erkennen, was zur Reduzierung von Laufzeitfehlern beiträgt.

  • Cache-fähig: GraphQL ist zwischenspeicherbar, was bedeutet, dass der Server die Ergebnisse einer Abfrage zwischenspeichern kann, wodurch Leistung und Skalierbarkeit verbessert werden.

  • Dokumentation: GraphQL verfügt über die Fähigkeit zur Selbstdokumentation, sodass Entwickler die Struktur und Funktionen der API schnell verstehen können.

Implementierungslösung von GraphQL in Spring Boot

Wenn die Back-End-Sprache Java ist, dann ist GraphQL Java die Basisbibliothek für die Implementierung von GraphQL. Darüber hinaus hat Spring GraphQL integriert. Wenn Spring im Projekt verwendet wird, ist Spring GraphQL eher zu empfehlen.

Die Entwicklung von Spring GraphQL ist im Allgemeinen in die folgenden Schritte unterteilt:

Spring GraphQL-Abhängigkeiten hinzufügen

Spring GraphQL-Abhängigkeiten in Ihrem Projekt hinzufügen. Sie können Abhängigkeiten über Build-Tools wie Maven oder Gradle hinzufügen. Wenn Sie beispielsweise Maven verwenden, können Sie die folgende Abhängigkeit „GraphQL-Schema definieren“ in Ihrer Anwendung hinzufügen. Schema definiert abfragbare Typen und Felder. Sie können ein Schema mit SDL (Schema Definition Language) oder programmgesteuert definieren.

Für Spring Boot-Projekte wird die Schemadatei im Verzeichnis resources/graphql/ abgelegt und dem Dateinamen wird graphqls angehängt. Das Folgende ist ein einfaches schema.graphqls, das ich definiert habe.

Es gibt zwei Abfrageimplementierungen an: „author(id:Int)“ bedeutet die Abfrage des Autors anhand der ID, und „allAuthors“ bedeutet die Abfrage des Autor-Arrays.

schema {

query: Query

}

type Query {
author(id:Int): Author
allAuthors: [Author]

}


type Author {
id:Int
firstName:String

lastName:String

E-Mail:String
Geburtsdatum:String
}


Die Implementierung von RuntimeWiringConfigurer ist der Kern der Implementierung von GraphQL zum Abrufen von Daten. Mit GraphQL können Persistenzschicht-Frameworks wie Mybatis/Jpa nicht direkt entfernt werden Daten aus der Datenbankunterstützung beziehen.

Der RuntimeWiringConfigurer ähnelt der Serviceschicht in Spring, die den Kern der Implementierung grundlegender Daten darstellt.

Das Folgende ist ein einfaches Beispiel:

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-graphql</artifactId>
        </dependency>

Hier werden zwei DataFetcher-Objekte innerhalb der configure-Methode definiert, um anzugeben, wie Autor und allAuthors Daten abfragen. Es ist ersichtlich, dass die Daten weiterhin über JPA abgefragt werden.

GraphQL-Controller definieren

Wir definieren GraphQLController, um Eingabeparameter von Webanfragen zu empfangen. Das Beispiel lautet wie folgt:

@Component
public class AuthorWiring implements RuntimeWiringConfigurer {
    private final AuthorRepository authorRepository;
    public AuthorWiring(AuthorRepository authorRepository) {
        this.authorRepository = authorRepository;
    }
    @Override
    public void configure(RuntimeWiring.Builder builder) {
        builder.type("Query", typeWiring -> typeWiring
                        .dataFetcher("allAuthors", environment -> authorRepository.findAll())
                        .dataFetcher("author", environment -> authorRepository.getReferenceById(environment.getArgument("id")))
    }
}

Das GraphQL-Objekt im Code ist der Einstiegspunkt für die Ausführung von Abfragen, aber GraphQL verfügt nur über einen privaten Konstruktor Es kann nicht direkt injiziert werden. GraphQL-Objekte müssen durch Injektion von GraphQlSource abgerufen werden.

Beachten Sie, dass wir in GraphQL nur String zum Empfangen von Parametern verwenden können und keine Modellobjekte verwenden können. Dies liegt daran, dass die Graph-Anforderungsparameter keine JSON-Strukturen sind.

Diagrammanfrage testen

Wir erstellen eine graphql.http-Datei, um HTTP-Anfragen in der Idee auszuführen

### POST-Anfrage mit JSON-Body senden

POST http://localhost:8080/graphql/query

Inhaltstyp: application/json

{
Autor(id: 1) {

id
Vorname
Nachname

Geburtsdatum

}
}

### POST-Anfrage mit JSON-Text senden
POST http://localhost:8080 /graphql/query
Content-Type: application/json

{

allAuthors {

id
Vorname
Nachname

Geburtsdatum

}
}


Führen Sie die Abfrage von Autor (ID: 1) aus und Sie können die normalen Rückgabeergebnisse sehen. Wenn wir nur die Felder „Vorname“ und „Nachname“ benötigen, entfernen Sie einfach die ID und das Geburtsdatum aus den Eingabeparametern der Anfrage, ohne den Back-End-Code zu ändern.


Das obige ist der detaillierte Inhalt vonWie SpringBoot GraphQL zur Entwicklung einer Web-API verwendet. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme
Dieser Artikel ist reproduziert unter:亿速云. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen
Java -Plattform Unabhängigkeit: Kompatibilität mit unterschiedlichem BetriebssystemJava -Plattform Unabhängigkeit: Kompatibilität mit unterschiedlichem BetriebssystemMay 13, 2025 am 12:11 AM

JavaachievesplattformIndependencethroughthejavavirtualMachine (JVM), die Codetorunondifferentoperatingsystems mit der Modifizierung von TheJVMCompilesjavacodeIntoplatform-inindivespendentBytecode, abgerechnet, abtrakt, abtret, abtrakt,

Welche Funktionen machen Java immer noch mächtigWelche Funktionen machen Java immer noch mächtigMay 13, 2025 am 12:05 AM

JavaispowerfulDuetoitsplattformindependenz, objektorientierteNature, Richstandardlibrary, PerformanceCapabilities, andstrongSecurityFeatures.1) PlattformindependenceAllowsApplicationStorunonanyDevicesupportingjava)

Top Java -Funktionen: Ein umfassender Leitfaden für EntwicklerTop Java -Funktionen: Ein umfassender Leitfaden für EntwicklerMay 13, 2025 am 12:04 AM

Zu den Top-Java-Funktionen gehören: 1) objektorientierte Programmierung, Unterstützung von Polymorphismus, Verbesserung der Code-Flexibilität und -wartbarkeit; 2) Ausnahmebehörigkeitsmechanismus, Verbesserung der Code-Robustheit durch Try-Catch-finaler Blöcke; 3) Müllsammlung, Vereinfachung des Speichermanagements; 4) Generika, Verbesserung der Art Sicherheit; 5) ABBDA -Ausdrücke und funktionale Programmierung, um den Code prägnanter und ausdrucksstärker zu gestalten; 6) Reiche Standardbibliotheken, die optimierte Datenstrukturen und Algorithmen bereitstellen.

Ist Java wirklich unabhängig? Wie 'einmal schreiben, überall rennen', funktioniertIst Java wirklich unabhängig? Wie 'einmal schreiben, überall rennen', funktioniertMay 13, 2025 am 12:03 AM

JavaisnotentirelyplattformindependentDuetojvmvariationsandnativeCodeIntegration, ButitlarglyUpholdsitsWorapromise.1) JavacompilestobyteCoderunbythejvm, erlaubteCross-PlatformExecution.2)

Entmystifizierung des JVM: Ihr Schlüssel zum Verständnis der Java -AusführungEntmystifizierung des JVM: Ihr Schlüssel zum Verständnis der Java -AusführungMay 13, 2025 am 12:02 AM

ThejavavirtualMachine (JVM) IsanabstractComputingMachinecrucialforjavaexecutionasitrunsjavabytecode, ermöglicht die "writeonce, runanywhere"

Ist Java immer noch eine gute Sprache, die auf neuen Funktionen basiert?Ist Java immer noch eine gute Sprache, die auf neuen Funktionen basiert?May 12, 2025 am 12:12 AM

JavaremainsAgoodlanguageduetoitscontinuousevolutionandrobustEcosystem.1) LambdaexpressionenhanceCodereadabilityAnableFunctionalprogramm.

Was macht Java großartig? Schlüsselmerkmale und VorteileWas macht Java großartig? Schlüsselmerkmale und VorteileMay 12, 2025 am 12:11 AM

Javaisgratduetoitsplattformindependenz, robutepoopsupport, extensinstivibrary und Strongcommunity.1) PlattformindependenzenviajvMallowsCodetorunonvariousPlatforms.2) oopfeatures Likecapsulation, Erbe und PolymorphoseMendeularsCalablcode.3)

Top 5 Java -Funktionen: Beispiele und ErklärungenTop 5 Java -Funktionen: Beispiele und ErklärungenMay 12, 2025 am 12:09 AM

Die fünf Hauptmerkmale von Java sind Polymorphismus, Lambda -Ausdrücke, Streamsapi, Generika und Ausnahmebehandlung. 1. Polymorphismus ermöglicht es, Objekte verschiedener Klassen als Objekte gemeinsamer Basisklassen zu verwenden. 2. Lambda -Ausdrücke machen den Code prägnanter, insbesondere für die Handhabung von Sammlungen und Streams. 3.Streamsapi verarbeitet effizient große Datensätze und unterstützt deklarative Vorgänge. 4. Generika bieten Typensicherheit und Wiederverwendbarkeit, und während der Zusammenstellung werden Typfehler aufgenommen. 5. Ausnahmebehandlung hilft, fehlerfrei zu handhaben und zuverlässige Software zu schreiben.

See all articles

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

Video Face Swap

Video Face Swap

Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heißer Artikel

Nordhold: Fusionssystem, erklärt
3 Wochen vorBy尊渡假赌尊渡假赌尊渡假赌
Mandragora: Flüstern des Hexenbaum
3 Wochen vorBy尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

VSCode Windows 64-Bit-Download

VSCode Windows 64-Bit-Download

Ein kostenloser und leistungsstarker IDE-Editor von Microsoft

WebStorm-Mac-Version

WebStorm-Mac-Version

Nützliche JavaScript-Entwicklungstools

mPDF

mPDF

mPDF ist eine PHP-Bibliothek, die PDF-Dateien aus UTF-8-codiertem HTML generieren kann. Der ursprüngliche Autor, Ian Back, hat mPDF geschrieben, um PDF-Dateien „on the fly“ von seiner Website auszugeben und verschiedene Sprachen zu verarbeiten. Es ist langsamer und erzeugt bei der Verwendung von Unicode-Schriftarten größere Dateien als Originalskripte wie HTML2FPDF, unterstützt aber CSS-Stile usw. und verfügt über viele Verbesserungen. Unterstützt fast alle Sprachen, einschließlich RTL (Arabisch und Hebräisch) und CJK (Chinesisch, Japanisch und Koreanisch). Unterstützt verschachtelte Elemente auf Blockebene (wie P, DIV),

SAP NetWeaver Server-Adapter für Eclipse

SAP NetWeaver Server-Adapter für Eclipse

Integrieren Sie Eclipse mit dem SAP NetWeaver-Anwendungsserver.

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor