GraphQL ialah bahasa pertanyaan untuk API, yang membolehkan pelanggan menanyakan data dengan tepat dan mengelakkan pembaziran jalur lebar rangkaian dan sumber pelayan. Dalam artikel ini, kita akan membincangkan cara membuat API GraphQL menggunakan PHP.
Cara API GraphQL berfungsi
GraphQL API adalah berdasarkan bahasa pertanyaan. Pelanggan menghantar permintaan pertanyaan kepada pelayan, dan pelayan menghuraikan permintaan dan mengembalikan data yang sepadan. Permintaan dan respons dihantar dan diterima dalam format bahasa GraphQL.
GraphQL API juga menyokong pertanyaan berkaitan berbilang peringkat, di mana pelanggan boleh bertanya beberapa data dan kemudian meminta data berkaitan dalam pertanyaan yang sama. Ini sangat mengurangkan lebar jalur rangkaian dan overhed pelayan.
Terdapat tiga konsep utama dalam API GraphQL: pertanyaan, jenis dan penghurai. Pertanyaan ialah permintaan yang dihantar oleh klien, jenis GraphQL ialah objek yang digunakan dalam API dan penyelesai ialah kod yang menukar permintaan kepada respons.
Mencipta API GraphQL
Kami akan melaksanakan API GraphQL menggunakan PHP dan menggunakan perpustakaan webonyx/graphql-php untuk membina dan menghuraikan pertanyaan.
Pertama, kita perlu mencipta beberapa jenis GraphQL, yang menerangkan objek dalam API. Berikut ialah contoh Jenis Pengguna:
use GraphQLTypeDefinitionType; use GraphQLTypeDefinitionObjectType; $userType = new ObjectType([ 'name' => 'User', 'fields' => [ 'id' => Type::int(), 'name' => Type::string(), 'email' => Type::string() ] ]);
Kod di atas mencipta jenis bernama Pengguna dengan tiga medan: id, nama dan e-mel. Setiap medan mempunyai jenis, Type::int() mewakili jenis integer, dan Type::string() mewakili jenis rentetan.
Seterusnya, kita perlu mencipta penghurai untuk mengendalikan pertanyaan. Berikut ialah contoh penghurai pertanyaan pengguna:
$rootValue = [ 'users' => [ ['id' => 1, 'name' => 'Alice', 'email' => 'alice@example.com'], ['id' => 2, 'name' => 'Bob', 'email' => 'bob@example.com'] ] ]; $resolver = function ($root, $args) { global $rootValue; if (isset($args['id'])) { foreach ($rootValue['users'] as $user) { if ($user['id'] == $args['id']) { return $user; } } } else { return $rootValue['users']; } };
Kod di atas mencipta tatasusunan $rootValue, yang mengandungi dua objek pengguna. Fungsi $resolver akan mengembalikan data yang sepadan mengikut permintaan yang dihantar oleh klien. Jika permintaan mempunyai parameter id, maklumat pengguna dengan id tersebut akan dikembalikan, jika tidak semua maklumat pengguna akan dikembalikan.
Akhir sekali, kita perlu mengikat jenis dan penyelesai di atas ke dalam API GraphQL. Berikut ialah kod pengikat:
use GraphQLGraphQL; use GraphQLTypeSchema; $schema = new Schema([ 'query' => new ObjectType([ 'name' => 'Query', 'fields' => [ 'user' => [ 'type' => $userType, 'args' => ['id' => Type::int()], 'resolve' => $resolver ], 'users' => [ 'type' => Type::listOf($userType), 'resolve' => $resolver ] ] ]) ]); if (!empty($_POST['query'])) { $result = GraphQL::executeQuery($schema, $_POST['query']); echo json_encode($result->toArray()); }
Kod di atas mengikat jenis pengguna dan penyelesai ke dalam API GraphQL dan mencipta objek pertanyaan. Dalam objek pertanyaan kita boleh menentukan berbilang pertanyaan seperti 'pengguna' dan 'pengguna'. Setiap pertanyaan perlu menentukan jenis dan penghurainya, yang akan dipanggil apabila pertanyaan dikesan.
Kemudian kami perlu menghantar pertanyaan ke dalam API melalui permintaan POST dan menghuraikan data respons. Mengambil kod di atas sebagai contoh, kami akan mendapat objek JSON respons daripada API dan mengeluarkannya secara langsung.
Ringkasan
Dalam artikel ini, kami membincangkan cara mencipta API GraphQL menggunakan PHP. Kami membincangkan cara API GraphQL berfungsi dan menyediakan beberapa kod sampel untuk menunjukkan cara mencipta jenis, penyelesai dan mengikatnya ke dalam API. Kami juga menggunakan perpustakaan webonyx/graphql-php untuk memudahkan membina dan menghuraikan API. Jika anda ingin mengetahui lebih lanjut tentang GraphQL, sila rujuk dokumentasi rasmi GraphQL.
Atas ialah kandungan terperinci Ketahui cara membuat API GraphQL menggunakan PHP: Langkah-langkah untuk membina antara muka API. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!