7.0.4 • Published 1 year ago

@shopify/koa-shopify-graphql-proxy v7.0.4

Weekly downloads
3,571
License
MIT
Repository
github
Last release
1 year ago

@shopify/koa-shopify-graphql-proxy

Build Status Build Status License: MIT npm version

A wrapper around koa-better-http-proxy which allows easy proxying of GraphQL requests from an embedded Shopify app.

Installation

yarn add @shopify/koa-shopify-graphql-proxy

Usage

The module exports a proxy middleware as its default export. It expects that you have other middleware set up (such as koa-shopify-auth) to authenticate requests with Shopify, and have session data stored on ctx.session.

Basic

Attaching the middleware will proxy any requests sent to /graphql on your app to the current logged-in shop found in session.

// server/index.js
import koa from 'koa';
import session from 'koa-session';
import createShopifyAuth from '@shopify/koa-shopify-auth';
import proxy from '@shopify/koa-shopify-graphql-proxy';

const app = koa();

app.use(session());

app.use(
  createShopifyAuth({
    /* your config here */
  }),
);

app.use(proxy({version: 'unstable'}));

This allows client-side scripts to query a logged-in merchant's shop without needing to know the user's access token.

fetch('/graphql', {credentials: 'include', body: mySerializedGraphQL});

Custom path

If you have your own /graphql route and don't want to clobber it, you can use a library like (koa-mount)https://github.com/koajs/mount to namespace the middleware.

// server/index
import mount from 'koa-mount';

//....

app.use(mount('/shopify', proxy({version: 'unstable'}));
// client/some-component.js
fetch('/shopify/graphql', {credentials: 'include', body: mySerializedGraphQL});

Private app

If you have a private shopify app, you can than skip over the auth step and use this library directly for setting up graphql proxy.

// server/index.js
import koa from 'koa';
import session from 'koa-session';
import proxy from '@shopify/koa-shopify-graphql-proxy';

const app = koa();

app.use(session());

app.use(
  proxy({
    version: 'unstable',
    shop: '<my-shop-name>.myshopify.com',
    password: '<your-app-password>',
  }),
);
7.0.4

1 year ago

7.0.3

1 year ago

7.0.2

2 years ago

7.0.1

2 years ago

7.0.0

2 years ago

6.0.7

2 years ago

6.0.6

2 years ago

6.0.3

2 years ago

6.0.5

2 years ago

6.0.4

2 years ago

6.0.2

3 years ago

6.0.1

3 years ago

6.0.0

3 years ago

5.0.2

3 years ago

5.0.1

3 years ago

5.0.0

3 years ago

4.1.4

3 years ago

4.1.3

3 years ago

4.1.2

3 years ago

4.1.1

3 years ago

4.1.0

3 years ago

4.0.4

4 years ago

4.0.3

4 years ago

4.0.2

4 years ago

4.0.1

4 years ago

4.0.0

4 years ago

3.3.1

4 years ago

3.3.0

4 years ago

3.2.5

4 years ago

3.2.4

4 years ago

3.2.3

4 years ago

3.2.2

4 years ago

3.2.1

5 years ago

3.2.0

5 years ago

3.1.2

5 years ago

3.1.1

5 years ago

3.1.0

5 years ago

3.0.3

5 years ago

3.0.2

5 years ago

3.0.1

5 years ago

3.0.0

5 years ago

2.1.5

5 years ago

2.1.3

5 years ago

2.1.2

6 years ago

2.1.1

6 years ago

2.1.0

6 years ago

2.0.3

6 years ago

2.0.2

6 years ago

2.0.1

6 years ago

2.0.0

6 years ago

1.0.3

6 years ago

1.0.2

6 years ago

1.0.1

6 years ago