Rumah > Artikel > pembangunan bahagian belakang > Cara membuat antara muka API menggunakan GraphQL dalam PHP
GraphQL ialah bahasa pertanyaan API baru muncul yang boleh menentukan dengan tepat data yang perlu dikembalikan pada klien, dengan itu mengurangkan penghantaran data yang tidak diperlukan oleh pelayan dan meningkatkan kecekapan permintaan rangkaian dan penghantaran data. Berbanding dengan API gaya RESTful tradisional, GraphQL lebih fleksibel dan cekap. Dalam artikel ini, kami akan meneroka cara menggunakan GraphQL dalam PHP untuk mencipta antara muka API.
Sebelum anda mula menggunakan GraphQL, anda perlu memasang perpustakaan berkaitan GraphQL. Dalam PHP, perpustakaan GraphQL yang paling popular ialah webonyx/graphql-php. Kita boleh memasangnya melalui komposer. Operasi khusus adalah seperti berikut:
$ composer require webonyx/graphql-php
Dalam GraphQL, skema mentakrifkan model data dan pernyataan pertanyaan. Skema ialah bahagian teras GraphQL Dengan mentakrifkan skema, kita boleh menentukan gelagat dan bentuk data API menggunakan kelas GraphQLTypeSchema untuk mencipta skema. Sebagai contoh, berikut ialah definisi skema ringkas:
use GraphQLTypeDefinitionType; use GraphQLTypeSchema; $queryType = new GraphQLTypeDefinitionObjectType([ 'name' => 'Query', 'fields' => [ 'message' => [ 'type' => Type::string(), 'resolve' => function() { return 'Hello, World!'; } ], ] ]); $schema = new Schema([ 'query' => $queryType ]);
Dalam contoh ini, kami mentakrifkan jenis Pertanyaan yang mengandungi satu medan. Medan dipanggil mesej, dan ia mengembalikan rentetan Hello, World!. Dalam skema, kami mentakrifkan dan mengeksport queryType, dan menggunakan jenis ini untuk menentukan entri pertanyaan Skema.
Setelah skema ditakrifkan, anda boleh mula memproses permintaan GraphQL. Kami boleh menggunakan perpustakaan PHP GraphQL untuk mengendalikan permintaan. Antaranya, kelas GraphQLServerStandardServer menyediakan pelaksanaan pelayan dan mengarahkan permintaan kepada pengendali skema untuk mendapatkan hasil tindak balas. Langkah asas untuk memproses permintaan GraphQL adalah seperti berikut:
Berikut ialah kod contoh asas untuk mengendalikan permintaan GraphQL:
use GraphQLServerStandardServer; // 获取请求参数 $request = json_decode(file_get_contents('php://input'), true); // 将请求参数解析为GraphQL查询 $query = isset($request['query']) ? $request['query'] : null; $variables = isset($request['variables']) ? $request['variables'] : null; // 执行请求 $server = new StandardServer([ 'schema' => $schema, 'debug' => true, ]); $result = $server->executePsrRequest(Request::fromGlobals(), $query, [], $variables); // 返回结果 echo json_encode($result);
Dalam contoh ini, kita mula-mula mendapatkan parameter permintaan. Parameter permintaan kemudiannya dihuraikan ke dalam pertanyaan GraphQL dan dilaksanakan melalui StandardServer. Akhir sekali, kami menyusun hasil pulangan ke dalam format JSON dan mengembalikannya kepada klien.
Untuk meningkatkan kefungsian API GraphQL, kami boleh menambah "ciri" dan "kebenaran". Sokongan GraphQL untuk ciri ini agak berkuasa. Sebagai contoh, anda boleh menggunakan "pemeriksaan jenis dikuatkuasakan" GraphQL untuk memastikan setiap medan mempunyai jenis data yang betul. Selain itu, anda boleh menggunakan "Pengesahan Skema" GraphQL untuk memastikan setiap medan wujud dan mematuhi jenis yang kami tetapkan.
Pada masa yang sama, untuk melindungi keselamatan data, kami mungkin perlu menambahkan "kebenaran" pada API. "Kebenaran" adalah untuk mengesahkan sama ada pengguna mempunyai kebenaran untuk mengakses data tertentu dalam pangkalan data GraphQL menyediakan pelbagai cara untuk melaksanakan keperluan kawalan kebenaran Sebagai contoh, apabila mentakrifkan skema, anda boleh menentukan kawalan akses berasaskan peranan yang berkuasa.
Pengesahan ialah sebahagian daripada pengesahan aplikasi web dan digunakan untuk mengesan identiti pengguna. Pengesahan juga disokong dalam GraphQL. Apabila memproses permintaan, kami boleh memastikan keselamatan API dengan menyemak sama ada pengguna mempunyai kaedah pengesahan yang sah. Apabila melaksanakan pengesahan, kami juga boleh menghantar maklumat identiti pengguna sebagai parameter ke dalam setiap permintaan.
GraphQL memperkenalkan konsep "konteks" untuk menyelesaikan masalah keadaan sementara atau sifat yang diperlukan semasa mengakses atau mengemas kini data. Konteks lazimnya ialah stor atau cache berterusan yang disambungkan kepada operasi GraphQL, tetapi juga boleh mengandungi maklumat berguna yang sewenang-wenangnya, seperti data pengesahan untuk pengguna semasa dan sebarang data permintaan.
Dalam PHP, kami boleh menghantar data kepada setiap permintaan dengan menambahkan parameter dalam konteks. Sebagai contoh, berikut ialah contoh asas:
$context = [ 'db' => $db, 'currentUser' => $currentUser, ]; $server = new StandardServer([ 'schema' => $schema, 'context' => $context, ]); $result = $server->processPsrRequest($request, $response);
Dalam contoh ini, kami mentakrifkan pembolehubah yang dipanggil "konteks" dan menambah pembolehubah pada pengendali permintaan. Dengan cara ini, setiap permintaan boleh mengakses konteks tersebut dan menggunakan maklumat yang terkandung di dalamnya.
Ringkasan
Untuk menggunakan GraphQL untuk mencipta antara muka API dalam PHP, kita perlu memasang perpustakaan GraphQL, mentakrifkan skema, mengendalikan permintaan GraphQL, melaksanakan kebenaran dan pengesahan serta menggunakan konteks untuk lulus maklumat. Nilai sebenar GraphQL ialah ia menyediakan cara yang fleksibel dan cekap untuk membuat pertanyaan dan mengendalikan data, membantu pembangun mencipta API yang lebih elegan dan cekap. Saya harap artikel ini dapat membantu pembaca memahami dengan lebih baik, mempelajari GraphQL dan menggunakannya untuk membina API yang menakjubkan dalam PHP.
Atas ialah kandungan terperinci Cara membuat antara muka API menggunakan GraphQL dalam PHP. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!