Maison  >  Article  >  Java  >  Utilisation de GraphQL pour le traitement des requêtes dans le développement d'API Java

Utilisation de GraphQL pour le traitement des requêtes dans le développement d'API Java

PHPz
PHPzoriginal
2023-06-18 12:14:242124parcourir

Avec le développement continu et la popularité des applications Web, l'interaction entre les interfaces front-end et back-end est également constamment mise à jour et optimisée. Avec la maturité et l'application généralisée de l'API Restful, GraphQL, en tant que cadre de développement d'API Web émergent, a commencé à recevoir de plus en plus d'attention et d'applications.

Cet article présentera la méthode d'implémentation spécifique d'utilisation de GraphQL pour le traitement des requêtes dans le développement d'API Java, y compris les concepts de base de GraphQL, les avantages de GraphQL, comment utiliser GraphQL en Java et des suggestions d'utilisation de GraphQL.

1. Le concept de base de GraphQL

GraphQL (Graph Query Language) est un nouveau langage de requête API développé par Facebook. Il permet au client de spécifier explicitement les données qui doivent être obtenues à partir de l'API back-end. Les fonctionnalités de base de GraphQL sont les suivantes :

  1. Style de conception d'API déclaratif : GraphQL permet au client de définir l'ensemble de données qui doit être obtenu, et le backend n'a qu'à fournir les données correspondantes.
  2. Système de type fort : GraphQL utilise un système de type pour valider et définir les données.
  3. Compatible avec plusieurs langages de programmation : GraphQL prend en charge plusieurs langages de programmation, notamment Java, JavaScript, Python, Ruby, etc.
  4. Temps réel : GraphQL prend en charge les fonctions de requête et d'abonnement en temps réel.
  5. Capacité d'auto-description : GraphQL a la capacité de s'auto-decrire, et les données renvoyées via les opérations de requête peuvent également donner le type et la structure des données.

2. Avantages de GraphQL

  1. Réduire le volume de transmission réseau : GraphQL renvoie uniquement les données demandées par le client, réduisant ainsi le volume de transmission réseau et la consommation des ressources du serveur causées par la redondance des données.
  2. Flexibilité : GraphQL est très flexible. Le client peut définir la structure de données dont il a besoin et le backend n'a pas besoin de modifier la structure des données renvoyées.
  3. Évitez plusieurs requêtes : en interrogeant des champs composites, GraphQL évite la situation où un seul type de données est renvoyé dans une seule requête, réduisant ainsi la consommation de performances causée par plusieurs requêtes.
  4. Facile à utiliser : le langage de requête et d'exploitation de GraphQL est facile à utiliser et à apprendre, ce qui rend l'acquisition de données plus pratique et plus rapide.

3. Utilisation de GraphQL en Java

Les développeurs Java peuvent compléter les applications GraphQL en utilisant la bibliothèque GraphQL-Java. GraphQL-Java est une implémentation Java open source de la communauté GraphQL, qui fournit une implémentation et un analyseur complet du protocole GraphQL. Voici les étapes spécifiques pour utiliser GraphQL en Java :

  1. Importer la bibliothèque GraphQL-Java : ajoutez les dépendances suivantes dans le fichier pom.xml :
<dependency>
    <groupId>com.graphql-java</groupId>
    <artifactId>graphql-java</artifactId>
    <version>15.0</version>
</dependency>
  1. Définir le schéma GraphQL : le schéma GraphQL définit la structure des données et la source de données. , déterminez le comportement et la réponse de l'API.
public class HelloWorldSchema {
    public static GraphQLSchema buildSchema() {
        //定义GraphQL的查询和类型
        return GraphQLSchema.newSchema()
                .query(GraphQLObjectType.newObject()
                        .name("HelloQuery")
                        .field(field -> field
                                .type(GraphQLString)
                                .name("hello")
                                .dataFetcher(new StaticDataFetcher("world")))
                        .build())
                .build();
    }
}
  1. Configurer GraphQL : configurez GraphQL pendant le processus d'initialisation de l'application.
public class GraphQLConfig {
    @Bean
    public GraphQLServlet graphQLServlet() {
        return new SimpleGraphQLServlet.Builder(
                HelloWorldSchema.buildSchema())
                .build();
    }
}
  1. Implémentez la source de données GraphQL : la source de données GraphQL fournit des dépendances pour l'acquisition de données.
public class BookDataFetcher implements DataFetcher<Book> {
    private final BookRepository repository;

    public BookDataFetcher(BookRepository repository) {
        this.repository = repository;
    }

    @Override
    public Book get(DataFetchingEnvironment environment) throws Exception {
        String id = environment.getArgument("id");
        return repository.findById(id);
    }
}
  1. Gestion des requêtes GraphQL : une fois la requête arrivée, gérez la requête GraphQL via Servlet ou Controller.
@RestController
public class GraphQLController {
    private final GraphQL graphql;

    public GraphQLController(GraphQL graphql) {
        this.graphql = graphql;
    }

    @PostMapping(value = "/graphql")
    public ResponseEntity<String> handlePost(@RequestBody String request) {
        ExecutionResult executionResult = graphql.execute(request);
        return ResponseEntity.ok(executionResult.getData().toString());
    }
}

4. Suggestions pour l'utilisation de GraphQL

  1. Vous devez être prudent lorsque vous utilisez GraphQL : GraphQL peut apporter de nombreux avantages, mais vous devez faire attention aux problèmes de sécurité et d'autorisation des données lorsque vous l'utilisez pour éviter les abus de données.
  2. Schéma bien conçu : la définition du schéma de GraphQL affectera directement le comportement et la réponse de l'API, il est donc nécessaire de concevoir un schéma clair, simple et facile à utiliser.
  3. Considérations sur les performances : la complexité des instructions de requête GraphQL et les performances des sources de données affecteront les performances de l'API, vous devez donc prêter attention aux considérations de performances lors de la mise en œuvre des requêtes GraphQL.
  4. Combiné avec l'API Restful : GraphQL n'a pas besoin de remplacer complètement l'API Restful. Il peut être bien intégré à l'API Restful et convient à différents scénarios d'application.

En bref, GraphQL présente de nombreux avantages et perspectives d'application dans le développement d'API Web, nous permettant de développer et de déboguer des API de manière plus flexible et plus rapide. Utiliser GraphQL dans le développement Java est également très simple. Il vous suffit de suivre les étapes ci-dessus pour le configurer. J'espère que cet article pourra fournir une référence précieuse à la majorité des développeurs Java dans les applications GraphQL.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn