Utiliser GraphQL dans ThinkPHP6
Avec la popularité de la séparation front-end et back-end, les API RESTful traditionnelles ne peuvent plus répondre aux besoins de l'Internet moderne. Le problème est que l'API de chaque ressource doit être conçue séparément, et chaque requête ne renvoie qu'une structure fixe, ce qui conduit à un grand nombre de requêtes et de données redondantes, et le programme devient très encombrant, ce qui n'est pas propice au développement. et l'entretien.
L'émergence de GraphQL résout ce problème. Il s'agit d'un nouveau type de langage de requête et d'exécution d'API qui peut réduire efficacement la quantité de transmission de données réseau et le nombre de requêtes. Contrairement aux API RESTful, GraphQL traite les données en définissant des types et des schémas, ce qui permet aux clients de demander exactement les données et les types dont ils ont besoin, améliorant ainsi l'efficacité des données et la vitesse de réponse.
Dans le développement PHP, ThinkPHP6 est un framework Web populaire qui fournit des fonctionnalités puissantes telles que la programmation orientée objet, le routage, les modèles et les opérations de base de données. Dans cet article, nous présenterons comment utiliser GraphQL dans ThinkPHP6.
Installation
Avant de commencer, nous devons nous assurer que PHP et Composer sont installés et connaissent la structure de base du projet ThinkPHP6. Ensuite, nous devons introduire GraphQL dans le projet :
composer require overblog/graphql-bundle:^0.12.17
Configuration
Après avoir introduit GraphQL, nous devons ajouter certains paramètres nécessaires dans le fichier de configuration ThinkPHP6. Ouvrez le fichier config/app.php
, recherchez le tableau providers
et ajoutez le GraphQL ServiceProvider : config/app.php
文件,找到 providers
数组,添加 GraphQL ServiceProvider:
'providers' => [ // ... OverblogGraphQLBundleGraphQLBundleServiceProvider::class, ]
接下来,我们需要定义 GraphQL 的路由,它将指向我们的 GraphQL 查询控制器。这里我们可以使用一个独立的路由文件 route/graphql.php
,它返回一个路由列表:
<?php use thinkacadeRoute; Route::any('/graphql', 'graphql/index')->name('graphql');
其中,graphql/index
指向我们的 GraphQL 查询控制器。
控制器
现在我们需要创建 GraphQL 控制器,它将负责处理所有 GraphQL 查询和突变。我们创建一个 appcontrollerGraphql.php
文件,定义一个空类 Graphql
,并继承 OverblogGraphQLBundleControllerController
:
<?php namespace appcontroller; use OverblogGraphQLBundleControllerController; class Graphql extends Controller { // }
在这个类中,我们需要定义一些方法来处理 GraphQL 查询和突变。在 PHP 中,我们可以使用注解来定义这些方法的操作。因此,我们需要添加注解支持。这里使用 doctrine/annotations
库,使用 Composer 安装:
composer require doctrine/annotations:^1.13.1
现在我们需要在 ThinkPHP6 中配置注解。打开 config/app.php
文件,编辑 providers
数组,添加 DoctrineCommonAnnotationsAnnotationReader
类:
'providers' => [ // ... DoctrineCommonAnnotationsAnnotationReader::class, ]
在控制器中,我们可以定义一个 @Route
注解来指定 GraphQL 查询的路由地址,以及一个 @ParamConverter
注解来自动转换查询参数等信息。例如,我们定义一个简单的查询方法:
use OverblogGraphQLBundleAnnotation as GQL; /** * @GQLType(type="MySchema") * @GQLQueryList() */ public function index() { return []; }
其中,@Type
注解指定了返回值类型,@QueryList
注解指定这个方法是一个查询方法。这里返回空数组,方便测试。接下来,我们需要定义图形查询模式。
模式
在模式中,我们定义了 GraphQL 的图形方案。我们使用 GraphQL
类创建它,并使用 @Object
, @Route
和 @Field
注解定义类型、方法和字段。例如,我们假设我们要查询一个用户列表,定义一个 UserQuery
类:
use GraphQLTypeDefinitionObjectType; use OverblogGraphQLBundleAnnotation as GQL; /** * @GQLType(type="query") */ class UserQuery extends ObjectType { /** * @GQLField(type="[User]", name="users") */ protected function getUsers() { return // return data from database or service; } }
这里我们使用 GraphQLTypeDefinitionObjectType
类作为 UserQuery 的基类,它定义了查询的字段和返回类型。我们添加了一个 getUsers
方法,它将返回一个用户列表。我们还添加了一个 @Field
注解,它指定了这个字段的类型和名称。在这个例子中,我们返回的是一个列表的用户类型。
这里,我们使用 type="[User]"
指定了用户类型,它与定义用户类型的方式有关。我们还可以写一个 User
类型,具体定义方式可以参考 GitHub 上的 overblog/graphql-bundle
文档。
查询
现在我们已经定义了控制器和模式,我们可以通过浏览器访问我们的 GraphQL Endpoint,我们的请求地址是 http://project.com/graphql?query={users{id,name}}
。这里我们使用 POST 请求,传递查询参数:
{ "query": "{users{id,name}}" }
这个请求将返回一个 JSON 格式的数据,其中包含了 ID 和名称等信息。它的格式类似于这样:
{ "data": { "users": [ { "id": 1, "name": "Alice" }, { "id": 2, "name": "Bob" } ] } }
我们还可以使用变量来传递参数。例如,我们想要查询用户 ID 为 1 的详细信息:
{ "query": "query GetUser($id:Int){user(id:$id){id,name,email}}", "variables": {"id":1} }
这将返回用户 ID、名称和电子邮件地址等详细信息。这里我们使用了一个 $
符号来传递参数,它指定了我们要查询用户的 ID。我们使用 variables
rrreee
route/graphql.php
, qui renvoie une liste de routes : #🎜🎜#rrreee#🎜🎜#Parmi eux, des points graphql/index
à notre contrôleur de requêtes GraphQL. #🎜🎜##🎜🎜#Controller#🎜🎜##🎜🎜#Maintenant, nous devons créer le contrôleur GraphQL, qui sera responsable de la gestion de toutes les requêtes et mutations GraphQL. Nous créons un fichier appcontrollerGraphql.php
, définissons une classe vide Graphql
et héritons de OverblogGraphQLBundleControllerController
: #🎜🎜#rrreee#🎜🎜#In this Dans la classe, nous devons définir certaines méthodes pour gérer les requêtes et les mutations GraphQL. En PHP, on peut utiliser des annotations pour définir les opérations de ces méthodes. Par conséquent, nous devons ajouter la prise en charge des annotations. La bibliothèque doctrine/annotations
est utilisée ici et installée à l'aide de Composer : #🎜🎜#rrreee#🎜🎜#Maintenant, nous devons configurer les annotations dans ThinkPHP6. Ouvrez le fichier config/app.php
, modifiez le tableau providers
et ajoutez la classe DoctrineCommonAnnotationsAnnotationReader
: #🎜🎜#rrreee#🎜🎜# dans le contrôleur, nous pouvons définir une annotation @Route
pour spécifier l'adresse de routage de la requête GraphQL, et une annotation @ParamConverter
pour convertir automatiquement les paramètres de requête et d'autres informations. Par exemple, nous définissons une méthode de requête simple : #🎜🎜#rrreee#🎜🎜# Parmi elles, l'annotation @Type
spécifie le type de valeur de retour, et la @QueryList
L'annotation spécifie que cette méthode est une méthode de requête. Un tableau vide est renvoyé ici pour faciliter les tests. Ensuite, nous devons définir le modèle de requête graphique. #🎜🎜##🎜🎜# Schéma #🎜🎜##🎜🎜# Dans le schéma, nous définissons le schéma graphique de GraphQL. Nous le créons en utilisant la classe GraphQL
et définissons les types et méthodes en utilisant les annotations @Object
, @Route
et @Field
. et les champs. Par exemple, nous supposons que nous voulons interroger une liste d'utilisateurs et définir une classe UserQuery
: #🎜🎜#rrreee#🎜🎜#Ici, nous utilisons la classe GraphQLTypeDefinitionObjectType
comme classe de base de UserQuery, elle définit les champs et le type de retour de la requête. Nous avons ajouté une méthode getUsers
qui renverra une liste d'utilisateurs. Nous avons également ajouté une annotation @Field
, qui spécifie le type et le nom de ce champ. Dans cet exemple, nous renvoyons une liste de types d'utilisateurs. #🎜🎜##🎜🎜#Ici, nous utilisons type="[User]"
pour spécifier le type d'utilisateur, qui est lié à la façon dont le type d'utilisateur est défini. Nous pouvons également écrire un type User
Pour des méthodes de définition spécifiques, veuillez vous référer au document overblog/graphql-bundle
sur GitHub. #🎜🎜##🎜🎜#Query#🎜🎜##🎜🎜#Maintenant que nous avons défini le contrôleur et le schéma, nous pouvons accéder à notre point de terminaison GraphQL via le navigateur, notre adresse de requête est le projet http://. com/graphql?query={users{id,name}}
. Ici, nous utilisons une requête POST pour transmettre les paramètres de la requête : #🎜🎜#rrreee#🎜🎜#Cette requête renverra des données au format JSON, qui contiennent des informations telles que l'ID et le nom. Son format est similaire à celui-ci : #🎜🎜#rrreee#🎜🎜#On peut également utiliser des variables pour passer des paramètres. Par exemple, nous souhaitons interroger les détails de l'ID utilisateur 1 : #🎜🎜#rrreee#🎜🎜#Cela renverra des détails tels que l'ID utilisateur, le nom et l'adresse e-mail. Ici, nous utilisons un symbole $
pour transmettre les paramètres, qui spécifient l'ID de l'utilisateur que nous souhaitons interroger. Nous utilisons le mot-clé variables
pour définir des variables réelles afin de fournir des paramètres de requête plus précis. #🎜🎜#Résumé
Dans cet article, nous avons présenté comment utiliser GraphQL dans le framework ThinkPHP6. Tout d'abord, nous avons présenté le contexte et les avantages de GraphQL, puis installé les packages nécessaires et configuré le routage. Ensuite, nous définissons un exemple de requête simple et utilisons des annotations pour définir son type et son fonctionnement. Enfin, nous avons présenté les variables et les méthodes de requête de GraphQL, démontrant comment utiliser GraphQL pour interroger et traiter des données. Dans le développement réel, nous pouvons personnaliser les types et les opérations GraphQL selon les besoins pour obtenir des comportements et des fonctions de requête plus complexes.
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!

Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

AI Hentai Generator
Générez AI Hentai gratuitement.

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

CrystalDiskMark est un petit outil de référence pour disques durs qui mesure rapidement les vitesses de lecture/écriture séquentielles et aléatoires. Ensuite, laissez l'éditeur vous présenter CrystalDiskMark et comment utiliser crystaldiskmark~ 1. Introduction à CrystalDiskMark CrystalDiskMark est un outil de test de performances de disque largement utilisé pour évaluer la vitesse et les performances de lecture et d'écriture des disques durs mécaniques et des disques SSD (SSD). ). Performances d’E/S aléatoires. Il s'agit d'une application Windows gratuite qui fournit une interface conviviale et divers modes de test pour évaluer différents aspects des performances du disque dur. Elle est largement utilisée dans les revues de matériel.

foobar2000 est un logiciel qui peut écouter des ressources musicales à tout moment. Il vous offre toutes sortes de musique avec une qualité sonore sans perte. La version améliorée du lecteur de musique vous permet d'obtenir une expérience musicale plus complète et plus confortable. lire l'audio avancé sur l'ordinateur. L'appareil est transplanté sur le téléphone mobile pour offrir une expérience de lecture de musique plus pratique et efficace. La conception de l'interface est simple, claire et facile à utiliser. opérations pour démarrer rapidement. Il prend également en charge une variété de skins et de thèmes, personnalisez les paramètres en fonction de vos propres préférences et créez un lecteur de musique exclusif prenant en charge la lecture de plusieurs formats audio. Il prend également en charge la fonction de gain audio pour régler le volume. selon vos propres conditions auditives pour éviter les dommages auditifs causés par un volume excessif. Ensuite, laisse-moi t'aider

Pour exécuter le projet ThinkPHP, vous devez : installer Composer ; utiliser Composer pour créer le projet ; entrer dans le répertoire du projet et exécuter php bin/console serve ; visiter http://localhost:8000 pour afficher la page d'accueil.

NetEase Mailbox, en tant qu'adresse e-mail largement utilisée par les internautes chinois, a toujours gagné la confiance des utilisateurs grâce à ses services stables et efficaces. NetEase Mailbox Master est un logiciel de messagerie spécialement créé pour les utilisateurs de téléphones mobiles. Il simplifie grandement le processus d'envoi et de réception d'e-mails et rend le traitement de nos e-mails plus pratique. Alors comment utiliser NetEase Mailbox Master, et quelles sont ses fonctions spécifiques Ci-dessous, l'éditeur de ce site vous donnera une introduction détaillée, en espérant vous aider ! Tout d’abord, vous pouvez rechercher et télécharger l’application NetEase Mailbox Master dans la boutique d’applications mobiles. Recherchez « NetEase Mailbox Master » dans l'App Store ou Baidu Mobile Assistant, puis suivez les instructions pour l'installer. Une fois le téléchargement et l'installation terminés, nous ouvrons le compte de messagerie NetEase et nous connectons. L'interface de connexion est la suivante

Le stockage cloud est devenu aujourd’hui un élément indispensable de notre vie quotidienne et de notre travail. En tant que l'un des principaux services de stockage cloud en Chine, Baidu Netdisk a gagné la faveur d'un grand nombre d'utilisateurs grâce à ses puissantes fonctions de stockage, sa vitesse de transmission efficace et son expérience de fonctionnement pratique. Et que vous souhaitiez sauvegarder des fichiers importants, partager des informations, regarder des vidéos en ligne ou écouter de la musique, Baidu Cloud Disk peut répondre à vos besoins. Cependant, de nombreux utilisateurs peuvent ne pas comprendre l'utilisation spécifique de l'application Baidu Netdisk, ce didacticiel vous présentera donc en détail comment utiliser l'application Baidu Netdisk. Si vous êtes toujours confus, veuillez suivre cet article pour en savoir plus ! Comment utiliser Baidu Cloud Network Disk : 1. Installation Tout d'abord, lors du téléchargement et de l'installation du logiciel Baidu Cloud, veuillez sélectionner l'option d'installation personnalisée.

ThinkPHP dispose de plusieurs versions conçues pour différentes versions de PHP. Les versions majeures incluent 3.2, 5.0, 5.1 et 6.0, tandis que les versions mineures sont utilisées pour corriger les bogues et fournir de nouvelles fonctionnalités. La dernière version stable est ThinkPHP 6.0.16. Lorsque vous choisissez une version, tenez compte de la version PHP, des exigences en matière de fonctionnalités et du support de la communauté. Il est recommandé d'utiliser la dernière version stable pour de meilleures performances et une meilleure assistance.

MetaMask (également appelé Little Fox Wallet en chinois) est un logiciel de portefeuille de cryptage gratuit et bien accueilli. Actuellement, BTCC prend en charge la liaison au portefeuille MetaMask. Après la liaison, vous pouvez utiliser le portefeuille MetaMask pour vous connecter rapidement, stocker de la valeur, acheter des pièces, etc., et vous pouvez également obtenir un bonus d'essai de 20 USDT pour la première liaison. Dans le didacticiel du portefeuille BTCCMetaMask, nous présenterons en détail comment enregistrer et utiliser MetaMask, ainsi que comment lier et utiliser le portefeuille Little Fox dans BTCC. Qu'est-ce que le portefeuille MetaMask ? Avec plus de 30 millions d’utilisateurs, MetaMask Little Fox Wallet est aujourd’hui l’un des portefeuilles de crypto-monnaie les plus populaires. Son utilisation est gratuite et peut être installée sur le réseau en tant qu'extension

Après avoir appuyé longuement sur le bouton play de l'enceinte, connectez-vous au wifi dans le logiciel pour l'utiliser. Tutoriel Modèle applicable : Xiaomi 12 Système : EMUI11.0 Version : Xiaoai Classmate 2.4.21 Analyse 1 Trouvez d'abord le bouton de lecture du haut-parleur et maintenez-le enfoncé pour accéder au mode de distribution réseau. 2 Connectez-vous à votre compte Xiaomi dans le logiciel Xiaoai Speaker sur votre téléphone et cliquez pour ajouter un nouveau haut-parleur Xiaoai. 3. Après avoir entré le nom et le mot de passe du wifi, vous pouvez appeler Xiao Ai pour l'utiliser. Supplément : quelles sont les fonctions de Xiaoai Speaker ? 1 Xiaoai Speaker a des fonctions système, des fonctions sociales, des fonctions de divertissement, des fonctions de connaissances, des fonctions de vie, une maison intelligente et des plans de formation. Résumé/Remarques : L'application Xiao Ai doit être installée à l'avance sur votre téléphone mobile pour une connexion et une utilisation faciles.
