bendeckdavid/graphql-client

Laravel的Graphql客户端

1.3.1 2023-01-15 20:15 UTC

This package is auto-updated.

Last update: 2024-09-10 11:16:17 UTC


README

为Laravel提供最小化的GraphQL客户端。

要求

  • Composer 2+

安装

安装包(Composer 2+)

composer require bendeckdavid/graphql-client

使用方法

环境变量

GRAPHQL_ENDPOINT="https://api.spacex.land/graphql/"

认证

我们通过在请求客户端中追加Authorization头提供最小化的认证集成。您可以使用env变量传递凭证。

GRAPHQL_CREDENTIALS="YOUR_CREDENTIALS"

您也可以在运行时使用withToken($credentials)方法传递认证凭证。

默认使用'Authorization'头和'Bearer'模式。您可以在.env文件中定义以下变量来覆盖默认行为。

GRAPHQL_AUTHENTICATION_HEADER="Authorization"

// Allowed: basic, bearer, custom
GRAPHQL_AUTHENTICATION="bearer"

使用示例

导入GraphQL客户端外观

use BendeckDavid\GraphqlClient\Facades\GraphQL;

基本使用

return GraphQL::query('
    capsules {
        id
        original_launch
        status
        missions {
            name
            flight
        }
    }
')->get();
//->get('json'); //get response as json object

突变请求

return GraphQL::mutator('
    insert_user(name: "David") {
        id
        name
        date_added
    }
')->get();
//->get('json');

如果您不传递变量,可以直接使用"query"或"mutator"作为快捷方式,否则必须使用"raw"属性

return GraphQL::raw('
    mutation($name: String) {
        insert_user(name: $name) {
            id
            name
            date_added
        }
    }
')
->with(["name" => "David"])
->get();
//->get('json');

您也可以使用类似的方法通过魔术方法传递GraphQL请求的variablespayload

return GraphQL::raw('
    mutation($name: String) {
        insert_user(name: $name) {
            id
            name
            date_added
        }
    }
')
->withName("David")
->get();
//->get('json');

原始响应

您可以通过使用getRaw()方法而不是请求中的get()来获取GraphQL请求的原始响应。

return GraphQL::raw('
    mutation($name: String) {
        insert_user(name: $name) {
            id
            name
            date_added
        }
    }
')
->with(["name" => "David"])
->getRaw();
//->getRaw('json');

如果您想将请求发送到另一个端点,可以这样做

return GraphQL::endpoint("https://api.spacex.land/graphql/")
->query('
    capsules {
        id
        original_launch
        status
        missions {
            name
            flight
        }
    }
')->get();
//->get('json');

头部

您可以通过使用"header"属性将头部添加到请求中,或者使用"withHeaders"添加多个头部

return GraphQL::query($query)
->header('name', 'value')
->withHeaders([
    'name' => 'value',
    'name' => 'value'
])->get();

上下文

向请求添加额外的上下文

return GraphQL::query($query)
->context([
    'ssl' => [
         "verify_peer" => false,
         "verify_peer_name" => false,
    ]
  ])->get();

作者

主要贡献者⭐

贡献者