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();
作者
- David Gutierrez @bendeckdavid
主要贡献者 ⭐
- Ehsan Quddusi @ehsanquddusi