gql-fetch
v0.3.9
Published
The GraphQL client powered by fetch. Supports multiform and upload files
Downloads
419
Maintainers
Readme
gql-fetch
gql-fetch
The purpose of creating this library is to gather special usage standards in a client library and to facilitate development process about client-server communication.
Thanks to its simple and easy use, this library provides fast and clean code development. In the background, a new generation request method as known as fetch is used. This library solves this problem by polyfilling for browsers that don't have fetch support.
Outstanding
- Thanks to it is designed for Graphql server, it provides fast and clean code development.
- File upload support.
- Requests can be aborted.
- It is light and it has polyfill support.
- Rxjs Observable support.
Installation
$ npm install gql-fetch
Usage
gql-fetch has two usage forms:
GQLClient
The GQLClient class takes two arguments when it is being created.
- url: RequestInfo (required)
- options:
IClientOptions
(optional)
const client = new GQLClient('http://localhost:5000/graphql');
Class Properties:
- url: RequestInfo
- headers: object
- fetch(query: string, variables?: IQueryVariables, options?:
IFetchOptions
):GQLRequest
- fetchObservable(query: string, variables?: IQueryVariables, options?:
IFetchOptions
): Observable<GQLResponse>
Sample Usage
const client = new GQLClient('http://localhost:5000/graphql');
const request = client.fetch(`query ($id: Int!) {
user(id: $id) {
id
name
}
}`,{ id: 1 });
request.then(...);
In order to cancel a request created with GQLClient;
const client = new GQLClient('http://localhost:5000/graphql');
const request = client.fetch(`query ($id: Int!) {
user(id: $id) {
id
name
}
}`,{ id: 1 });
request.abort();
fetchObservable Sample
const client = new GQLClient('http://localhost:5000/graphql');
const fo = client.fetchObservable(`query ($id: Int!) {
user(id: $id) {
id
name
}
}`,{ id: 1 });
fo.subscribe(...);
To upload file via GQLClient;
const client = new GQLClient('http://localhost:5000/graphql');
const request = client.fetch(`mutation ($file: File!) {
uploadFile(file: $file)
}`, { file: fs.createReadStream(__dirname + '/file.txt')});
request.then(...);
getFetch
The getFetch function has two arguments.
- url: RequestInfo (required)
- options:
IClientOptions
(optional)
This function returns the function.
Returned function arguments;
- query: string (required)
- variables: object (optional)
- fetchOptions:
IFetchOptions
(optional)
This function returns GQLRequest
class.
Sample Usage:
const gqlFetch = getFetch('http://localhost:5000/graphql');
const request = gqlFetch(`{
users {
id
name
}
}`);
request.then(...);
GQLRequest
This class is created to manage the requests.
Class Properties:
| Property | Type | Argument |
| ----------------- |---------------| ----------------------------------------------------- |
| response | Promise | - |
| aborted | boolean | - |
| abort | void | - |
| on | this | event: string, listener: (...args: any[]) => void |
| then | Promise | onfulfilled: IPromiseResolved< GQLResponse
>, onrejected: IPromiseRejected |
| catch | Promise | onrejected |
| finally | Promise | onfinally |
GQLResponse
Class Properties:
| Property | Type | Argument | | ----------------- |---------------| ------------------------ | | json | any | - | | status | number | - | | statusText | string | - | | ok | boolean | - | | url | string | - | | headers | Headers | - |
IClientOptions
Interface Properties:
| Property | Type | Argument | | ----------------- |---------------| ------------------------ | | headers | object | - |
IFetchOptions
Interface Properties:
| Property | Type | Argument | | ----------------- |---------------| ------------------------ | | headers | object | - | | operationName | string | - | | redirect | RedirectType | - | | follow | number | - | | timeout | number | - | | compress | boolean | - | | size | number | - | | agent | Http(s)Agent | - |
Node Compatibility
- node
>= 6.x
;