graphql-request

  • Version 3.7.0
  • Published
  • 75.9 kB
  • 3 dependencies
  • MIT license

Install

npm i graphql-request
yarn add graphql-request
pnpm add graphql-request

Overview

Minimal GraphQL client supporting Node and browsers for scripts or simple apps

Index

Functions

function batchRequests

batchRequests: <T extends unknown = any, V = Variables>(
url: string,
documents: BatchRequestDocument<V>[],
requestHeaders?: Dom.RequestInit['headers']
) => Promise<T>;
  • Send a batch of GraphQL Document to the GraphQL server for exectuion.

    Example 1

    // You can pass a raw string
    await batchRequests('https://foo.bar/graphql', [
    {
    query: `
    {
    query {
    users
    }
    }`
    },
    {
    query: `
    {
    query {
    users
    }
    }`
    }])
    // You can also pass a GraphQL DocumentNode as query. Convenient if you
    // are using graphql-tag package.
    import gql from 'graphql-tag'
    await batchRequests('https://foo.bar/graphql', [{ query: gql`...` }])

function gql

gql: (chunks: TemplateStringsArray, ...variables: any[]) => string;
  • Convenience passthrough template tag to get the benefits of tooling for the gql template tag. This does not actually parse the input into a GraphQL DocumentNode like graphql-tag package does. It just returns the string with any variables given interpolated. Can save you a bit of performance and having to install another package.

    Remarks

    Several tools in the Node GraphQL ecosystem are hardcoded to specially treat any template tag named "gql". For example see this prettier issue: https://github.com/prettier/prettier/issues/4360. Using this template tag has no runtime effect beyond variable interpolation.

    Example 1

    import { gql } from 'graphql-request'

    await request('https://foo.bar/graphql', gql...)

function rawRequest

rawRequest: <T = any, V = Variables>(
url: string,
query: string,
variables?: V,
requestHeaders?: Dom.RequestInit['headers']
) => Promise<{ data: T; extensions?: any; headers: Dom.Headers; status: number }>;
  • todo

function request

request: <T = any, V = Variables>(
url: string,
document: RequestDocument,
variables?: V,
requestHeaders?: Dom.RequestInit['headers']
) => Promise<T>;
  • Send a GraphQL Document to the GraphQL server for exectuion.

    Example 1

    // You can pass a raw string
    await request('https://foo.bar/graphql', `
    {
    query {
    users
    }
    }
    `)
    // You can also pass a GraphQL DocumentNode. Convenient if you
    // are using graphql-tag package.
    import gql from 'graphql-tag'
    await request('https://foo.bar/graphql', gql`...`)
    // If you don't actually care about using DocumentNode but just
    // want the tooling support for gql template tag like IDE syntax
    // coloring and prettier autoformat then note you can use the
    // passthrough gql tag shipped with graphql-request to save a bit
    // of performance and not have to install another dep into your project.
    import { gql } from 'graphql-request'
    await request('https://foo.bar/graphql', gql`...`)

Classes

class ClientError

class ClientError extends Error {}

    constructor

    constructor(
    response: GraphQLResponse<any>,
    request: GraphQLRequestContext<Variables>
    );

      property request

      request: GraphQLRequestContext<Variables>;

        property response

        response: GraphQLResponse<any>;

          class GraphQLClient

          class GraphQLClient {}
          • todo

          constructor

          constructor(url: string, options?: Dom.RequestInit);

            method batchRequests

            batchRequests: <T extends unknown = any, V = Variables>(
            documents: BatchRequestDocument<V>[],
            requestHeaders?: Dom.RequestInit['headers']
            ) => Promise<T>;
            • Send a GraphQL document to the server.

            method rawRequest

            rawRequest: <T = any, V = Variables>(
            query: string,
            variables?: V,
            requestHeaders?: Dom.RequestInit['headers']
            ) => Promise<{
            data: T;
            extensions?: any;
            headers: Dom.Headers;
            status: number;
            }>;

              method request

              request: <T = any, V = Variables>(
              document: RequestDocument,
              variables?: V,
              requestHeaders?: Dom.RequestInit['headers']
              ) => Promise<T>;
              • Send a GraphQL document to the server.

              method setEndpoint

              setEndpoint: (value: string) => GraphQLClient;
              • Change the client endpoint. All subsequent requests will send to this endpoint.

              method setHeader

              setHeader: (key: string, value: string) => GraphQLClient;
              • Attach a header to the client. All subsequent requests will have this header.

              method setHeaders

              setHeaders: (headers: Dom.RequestInit['headers']) => GraphQLClient;

                Type Aliases

                type BatchRequestDocument

                type BatchRequestDocument<V = Variables> = {
                document: RequestDocument;
                variables?: V;
                };

                  type RequestDocument

                  type RequestDocument = string | DocumentNode;

                    type Variables

                    type Variables = {
                    [key: string]: any;
                    };

                      Package Files (2)

                      Dependencies (3)

                      Dev Dependencies (22)

                      Peer Dependencies (1)

                      Badge

                      To add a badge like this onejsDocs.io badgeto your package's README, use the codes available below.

                      You may also use Shields.io to create a custom badge linking to https://www.jsdocs.io/package/graphql-request.

                      • Markdown
                        [![jsDocs.io](https://img.shields.io/badge/jsDocs.io-reference-blue)](https://www.jsdocs.io/package/graphql-request)
                      • HTML
                        <a href="https://www.jsdocs.io/package/graphql-request"><img src="https://img.shields.io/badge/jsDocs.io-reference-blue" alt="jsDocs.io"></a>