GraphQL是一種API查詢語言,它被用于獲取和傳遞數(shù)據(jù)。在這篇文章中,我們將介紹如何使用GraphQL在PHP CodeIgniter中實現(xiàn)API。
首先,我們需要安裝一個GraphQL庫來處理我們的查詢。我們建議使用webonyx/graphql-php庫,因為它已經(jīng)成為一個業(yè)界標(biāo)準(zhǔn)。
在安裝之前,我們需要確保我們的PHP版本符合GraphQL的最低要求。webonyx/graphql-php要求至少PHP 7.1。
安裝好庫之后,我們可以開始創(chuàng)建GraphQL的schema。在這個schema中,我們定義了API的所有查詢,類型和字段等。
舉例來說,我們想要創(chuàng)建一個查詢來獲取所有用戶的列表。我們可以在schema中添加以下內(nèi)容:
<pre>
type Query {
users: [User]!
}
type User {
id: ID!,
name: String!,
email: String!,
created_at: DateTime!,
updated_at: DateTime!
}
</pre>
在這個例子中,我們定義了一個users查詢,它將返回一個User數(shù)組。我們還定義了一個User類型,它具有id,name,email和created_at等字段。
接下來,我們需要創(chuàng)建一個PHP控制器來處理我們的GraphQL請求。我們在控制器中使用GraphQL的parse方法來處理請求并返回結(jié)果。
<pre>
use GraphQL\GraphQL;
use GraphQL\Type\Schema;
class Api extends CI_Controller {
public function graphql() {
$schema = new Schema([...]);
$input = file_get_contents('php://input');
$query = json_decode($input, true)['query'];
$result = GraphQL::executeQuery($schema, $query);
header('Content-Type: application/json');
echo json_encode($result->toArray());
}
}
</pre>
在這個例子中,我們創(chuàng)建了一個graphql方法來處理所有GraphQL請求。我們首先創(chuàng)建了一個Schema實例來保存我們的API schema。然后,我們從請求中獲取查詢,并使用GraphQL::executeQuery方法來處理查詢并返回結(jié)果。最后,我們需要將結(jié)果轉(zhuǎn)換為JSON格式并輸出。
最后,我們需要定義路由來將請求發(fā)送到我們的控制器。我們可以使用CodeIgniter中的路由來實現(xiàn)這一點。
舉例來說,我們可以添加以下路由:
<pre>
$route['api/graphql'] = 'api/graphql';
</pre>
在這個例子中,我們將所有api/graphql請求發(fā)送到我們的Api控制器的graphql方法中處理。
結(jié)論
以上就是如何在PHP CodeIgniter中使用GraphQL的介紹。我們需要定義GraphQL schema,創(chuàng)建一個PHP控制器來處理請求,并添加路由來將請求發(fā)送到我們的控制器中。GraphQL使我們的API更容易開發(fā)和維護(hù),因為我們可以精確控制我們的查詢和返回的數(shù)據(jù)。
上一篇grav php