Существует ли какая-либо библиотека nodejs, работающая с GitHub API v4? - PullRequest
0 голосов
/ 29 июня 2018

Спасибо, ребята, читайте мой вопрос. Название именно то, что я хочу знать. Надеюсь, это не будет стоить вам много времени.

1 Ответ

0 голосов
/ 30 июня 2018

Некоторыми из наиболее распространенных клиентов GraphQL являются graphql.js и apollo-client . Вы также можете использовать популярный запрос модуль. API-интерфейс graphql - это одна конечная точка POST в https://api.github.com/graphql с телом JSON, состоящим из полей query и variables (если в запросе есть переменные)

Использование graphql.js

const graphql = require('graphql.js');

var graph = graphql("https://api.github.com/graphql", {
  headers: {
    "Authorization": "Bearer <Your Token>",
    'User-Agent': 'My Application'
  },
  asJSON: true
});

graph(`
    query repo($name: String!, $owner: String!){
        repository(name:$name, owner:$owner){
            createdAt      
        }
    }
`, {
  name: "linux",
  owner: "torvalds"
}).then(function(response) {
  console.log(JSON.stringify(response, null, 2));
}).catch(function(error) {
  console.log(error);
});

Использование apollo-client

fetch = require('node-fetch');
const ApolloClient = require('apollo-client').ApolloClient;
const HttpLink = require('apollo-link-http').HttpLink;
const setContext = require('apollo-link-context').setContext;
const InMemoryCache = require('apollo-cache-inmemory').InMemoryCache;
const gql = require('graphql-tag');

const token = "<Your Token>";

const authLink = setContext((_, {
    headers
}) => {
    return {
        headers: {
            ...headers,
            authorization: token ? `Bearer ${token}` : null,
        }
    }
});

const client = new ApolloClient({
    link: authLink.concat(new HttpLink({
        uri: 'https://api.github.com/graphql'
    })),
    cache: new InMemoryCache()
});

client.query({
        query: gql `
    query repo($name: String!, $owner: String!){
        repository(name:$name, owner:$owner){
            createdAt      
        }
    }
  `,
        variables: {
            name: "linux",
            owner: "torvalds"
        }
    })
    .then(resp => console.log(JSON.stringify(resp.data, null, 2)))
    .catch(error => console.error(error));

Использование запроса

const request = require('request');

request({
    method: 'post',
    body: {
        query: `
    query repo($name: String!, $owner: String!){
        repository(name:$name, owner:$owner){
            createdAt      
        }
    } `,
        variables: {
            name: "linux",
            owner: "torvalds"
        }
    },
    json: true,
    url: 'https://api.github.com/graphql',
    headers: {
        Authorization: 'Bearer <Your Token>',
        'User-Agent': 'My Application'
    }
}, function(error, response, body) {
    if (error) {
        console.error(error);
        throw error;
    }
    console.log(JSON.stringify(body, null, 2));
});
...