bendeckdavid / graphql-client
Laravel的Graphql客户端
1.3.1
2023-01-15 20:15 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请求的variables
或payload
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