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
數(shù)組,添加 GraphQL ServiceProvider:
'providers' => [ // ... OverblogGraphQLBundleGraphQLBundleServiceProvider::class, ]
接下來,我們需要定義 GraphQL 的路由,它將指向我們的 GraphQL 查詢控制器。這里我們可以使用一個(gè)獨(dú)立的路由文件 route/graphql.php
,它返回一個(gè)路由列表:
<?php use thinkacadeRoute; Route::any('/graphql', 'graphql/index')->name('graphql');
其中,graphql/index
指向我們的 GraphQL 查詢控制器。
控制器
現(xiàn)在我們需要?jiǎng)?chuàng)建 GraphQL 控制器,它將負(fù)責(zé)處理所有 GraphQL 查詢和突變。我們創(chuàng)建一個(gè) appcontrollerGraphql.php
文件,定義一個(gè)空類 Graphql
,并繼承 OverblogGraphQLBundleControllerController
:
<?php namespace appcontroller; use OverblogGraphQLBundleControllerController; class Graphql extends Controller { // }
在這個(gè)類中,我們需要定義一些方法來處理 GraphQL 查詢和突變。在 PHP 中,我們可以使用注解來定義這些方法的操作。因此,我們需要添加注解支持。這里使用 doctrine/annotations
庫,使用 Composer 安裝:
composer require doctrine/annotations:^1.13.1
現(xiàn)在我們需要在 ThinkPHP6 中配置注解。打開 config/app.php
文件,編輯 providers
數(shù)組,添加 DoctrineCommonAnnotationsAnnotationReader
類:
'providers' => [ // ... DoctrineCommonAnnotationsAnnotationReader::class, ]
在控制器中,我們可以定義一個(gè) @Route
注解來指定 GraphQL 查詢的路由地址,以及一個(gè) @ParamConverter
注解來自動(dòng)轉(zhuǎn)換查詢參數(shù)等信息。例如,我們定義一個(gè)簡(jiǎn)單的查詢方法:
use OverblogGraphQLBundleAnnotation as GQL; /** * @GQLType(type="MySchema") * @GQLQueryList() */ public function index() { return []; }
其中,@Type
注解指定了返回值類型,@QueryList
注解指定這個(gè)方法是一個(gè)查詢方法。這里返回空數(shù)組,方便測(cè)試。接下來,我們需要定義圖形查詢模式。
模式
在模式中,我們定義了 GraphQL 的圖形方案。我們使用 GraphQL
類創(chuàng)建它,并使用 @Object
, @Route
和 @Field
注解定義類型、方法和字段。例如,我們假設(shè)我們要查詢一個(gè)用戶列表,定義一個(gè) 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 的基類,它定義了查詢的字段和返回類型。我們添加了一個(gè) getUsers
方法,它將返回一個(gè)用戶列表。我們還添加了一個(gè) @Field
注解,它指定了這個(gè)字段的類型和名稱。在這個(gè)例子中,我們返回的是一個(gè)列表的用戶類型。
這里,我們使用 type="[User]"
指定了用戶類型,它與定義用戶類型的方式有關(guān)。我們還可以寫一個(gè) User
類型,具體定義方式可以參考 GitHub 上的 overblog/graphql-bundle
文檔。
查詢
現(xiàn)在我們已經(jīng)定義了控制器和模式,我們可以通過瀏覽器訪問我們的 GraphQL Endpoint,我們的請(qǐng)求地址是 http://project.com/graphql?query={users{id,name}}
。這里我們使用 POST 請(qǐng)求,傳遞查詢參數(shù):
{ "query": "{users{id,name}}" }
這個(gè)請(qǐng)求將返回一個(gè) JSON 格式的數(shù)據(jù),其中包含了 ID 和名稱等信息。它的格式類似于這樣:
{ "data": { "users": [ { "id": 1, "name": "Alice" }, { "id": 2, "name": "Bob" } ] } }
我們還可以使用變量來傳遞參數(shù)。例如,我們想要查詢用戶 ID 為 1 的詳細(xì)信息:
{ "query": "query GetUser($id:Int){user(id:$id){id,name,email}}", "variables": {"id":1} }
這將返回用戶 ID、名稱和電子郵件地址等詳細(xì)信息。這里我們使用了一個(gè) $
符號(hào)來傳遞參數(shù),它指定了我們要查詢用戶的 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

Undress AI Tool
Images de déshabillage gratuites

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.

Clothoff.io
Dissolvant de vêtements AI

Video Face Swap
échangez les visages dans n'importe quelle vidéo sans effort grace à notre outil d'échange de visage AI entièrement gratuit?!

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)

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

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.

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 grace à 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.

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.

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

NetEase Mailbox, en tant qu'adresse e-mail largement utilisée par les internautes chinois, a toujours gagné la confiance des utilisateurs grace à 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

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.

étapes pour exécuter ThinkPHP Framework localement?: Téléchargez et décompressez ThinkPHP Framework dans un répertoire local. Créez un h?te virtuel (facultatif) pointant vers le répertoire racine ThinkPHP. Configurez les paramètres de connexion à la base de données. Démarrez le serveur Web. Initialisez l'application ThinkPHP. Accédez à l'URL de l'application ThinkPHP et exécutez-la.
