Minimal GraphQL client for Laravel.
- Composer 2+
Install Package (Composer 2+)
composer require bendeckdavid/graphql-client
Enviroment variable
GRAPHQL_ENDPOINT="https://api.spacex.land/graphql/"
We provide a minimal authentication integration by appending the Authorization
header to the request client. You can pass the credentials using an env
variable.
GRAPHQL_CREDENTIALS="YOUR_CREDENTIALS"
You can also pass auth credentials at runtime using withToken($credentials)
method.
'Authorization' header and 'Bearer' Schema are used by default. You can override the default behaviour by defining following variables in your .env
file.
GRAPHQL_AUTHENTICATION_HEADER="Authorization"
// Allowed: basic, bearer, custom
GRAPHQL_AUTHENTICATION="bearer"
Import GraphQL Client Facades
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');
You can access "query" or "mutator" as a shortcut if you are not passing variables, if is not the case you must use the "raw" attribute:
return GraphQL::raw('
mutation($name: String) {
insert_user(name: $name) {
id
name
date_added
}
}
')
->with(["name" => "David"])
->get();
//->get('json');
The variables
or payload
to the GraphQL request can also be passed using magic methods like:
return GraphQL::raw('
mutation($name: String) {
insert_user(name: $name) {
id
name
date_added
}
}
')
->withName("David")
->get();
//->get('json');
You can get the raw response from the GraphQL request by using getRaw()
method instead of get()
in the request.
return GraphQL::raw('
mutation($name: String) {
insert_user(name: $name) {
id
name
date_added
}
}
')
->with(["name" => "David"])
->getRaw();
//->getRaw('json');
If you want to address the request to another endpoint, you can do :
return GraphQL::endpoint("https://api.spacex.land/graphql/")
->query('
capsules {
id
original_launch
status
missions {
name
flight
}
}
')->get();
//->get('json');
You can include a header to the request by using the attribute "header" or add multiple headers by "withHeaders":
return GraphQL::query($query)
->header('name', 'value')
->withHeaders([
'name' => 'value',
'name' => 'value'
])->get();
Add additional context to the request
return GraphQL::query($query)
->context([
'ssl' => [
"verify_peer" => false,
"verify_peer_name" => false,
]
])->get();
- David Gutierrez @bendeckdavid
- Ehsan Quddusi @ehsanquddusi