shipper/graphql-client

Laravel的GraphQL客户端

dev-main 2024-06-24 23:08 UTC

This package is auto-updated.

Last update: 2024-09-24 23:41:32 UTC


README

适用于Laravel的最小化GraphQL客户端。

要求

  • Composer 2+

安装

安装包(Composer 2+)

composer require shipper/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 Shipper\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请求:

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();

作者

主要贡献者 ⭐

贡献者