Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/bendeckdavid/graphql-client
Minimal GraphQL client for Laravel.
https://github.com/bendeckdavid/graphql-client
client graphql graphql-client laravel php
Last synced: about 1 month ago
JSON representation
Minimal GraphQL client for Laravel.
- Host: GitHub
- URL: https://github.com/bendeckdavid/graphql-client
- Owner: bendeckdavid
- License: mit
- Created: 2021-12-23T02:55:13.000Z (almost 3 years ago)
- Default Branch: main
- Last Pushed: 2024-09-10T11:16:14.000Z (2 months ago)
- Last Synced: 2024-09-28T21:22:56.320Z (about 2 months ago)
- Topics: client, graphql, graphql-client, laravel, php
- Language: PHP
- Homepage:
- Size: 107 KB
- Stars: 45
- Watchers: 4
- Forks: 16
- Open Issues: 2
-
Metadata Files:
- Readme: README.md
- Contributing: CONTRIBUTING.md
- License: LICENSE
- Code of conduct: .github/CODE_OF_CONDUCT.md
Awesome Lists containing this project
README
# Minimal GraphQL Laravel Client
Minimal GraphQL client for Laravel.
## Requirements
- Composer 2+
## Installation
Install Package (Composer 2+)
```bash
composer require bendeckdavid/graphql-client
```## Usage
Enviroment variable
```php
GRAPHQL_ENDPOINT="https://api.spacex.land/graphql/"
```## Authentication
We provide a minimal authentication integration by appending the `Authorization` header to the request client. You can pass the credentials using an `env` variable.
```php
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.
```php
GRAPHQL_AUTHENTICATION_HEADER="Authorization"// Allowed: basic, bearer, custom
GRAPHQL_AUTHENTICATION="bearer"
```## Usage/Examples
Import GraphQL Client Facades
```php
use BendeckDavid\GraphqlClient\Facades\GraphQL;
```#### Basic use
```php
return GraphQL::query('
capsules {
id
original_launch
status
missions {
name
flight
}
}
')->get();
//->get('json'); //get response as json object
```#### Mutator Request
```php
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:
```php
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:
```php
return GraphQL::raw('
mutation($name: String) {
insert_user(name: $name) {
id
name
date_added
}
}
')
->withName("David")
->get();
//->get('json');
```#### Raw Response
You can get the raw response from the GraphQL request by using `getRaw()` method instead of `get()` in the request.
```php
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 :
```php
return GraphQL::endpoint("https://api.spacex.land/graphql/")
->query('
capsules {
id
original_launch
status
missions {
name
flight
}
}
')->get();
//->get('json');
```## Headers
You can include a header to the request by using the attribute "header" or add multiple headers by "withHeaders":
```php
return GraphQL::query($query)
->header('name', 'value')
->withHeaders([
'name' => 'value',
'name' => 'value'
])->get();
```## Context
Add additional context to the request
```php
return GraphQL::query($query)
->context([
'ssl' => [
"verify_peer" => false,
"verify_peer_name" => false,
]
])->get();
```## Author
- David Gutierrez [@bendeckdavid](https://www.github.com/bendeckdavid)
## Top Contributors ⭐
- Ehsan Quddusi [@ehsanquddusi](https://github.com/ehsanquddusi)
## Contributors
- Ryan Mayberry [@kerkness](https://github.com/kerkness)
- Jamie Duong [@chiendv](https://github.com/chiendv)