Цель, которую я хочу достичь, - прочитать и позже написать проблемы и метки в репозитории github с помощью javascript.
До сих пор мне удалось получить аутентификацию и получить некоторые данные в репозитории, но я не нашел способ получить данные ни по одному, ни по набору проблем.
Это код, который я использую.
var request = require("request");
var url = 'https://api.github.com/graphql';
var headers = {
Authorization:'token XXXXXXXXXXXXXXXXXXXXXXXXXXX',
Accept: 'application/json',
'User-Agent': 'request',
'Content-Type': 'application/json'
};
var options = {
method: 'post',
body: undefined,
json: true,
url: url,
headers: headers
};
function makeRequest(options){
request(options, function (error, response, body) {
if (error) {
console.error('error posting json: ', error);
throw error;
}
var responseHeaders = response.headers;
var statusCode = response.statusCode;
console.log('Status code: ', statusCode);
console.log('Body: ', body);
});
};
options.body = {
query: '{repository(owner:"TonyEdelweiss", name:"hello-world") {createdAt name projectsUrl}}'
};
makeRequest(options);
options.body = {
query: '{repository(owner:"TonyEdelweiss", name:"hello-world"){issues(first: 2){edges{cursor node{id}}}}}'
};
makeRequest(options);
На первом makeRequest() я получаю следующее, что хорошо:
Код состояния: 200 Тело: {данные: {репозиторий: {createdAt: '2017-09-29T17: 01: 25Z', имя: 'hello-world', projectsUrl: ' https://github.com/TonyEdelweiss/hello- world/projects '}}}
На второй я получаю только "[Object]") -:
Код состояния: 200 Тело: {данные: {репозиторий: {issues: [Object]}}}
Может кто подскажет?
Также я нашел это в документации github API v4: "Все операции GraphQL должны указывать их выбор до полей, возвращающих скалярные значения, чтобы обеспечить однозначный ответ". Это может объяснить, почему я не получаю данные, но не дает никаких дальнейших указаний.
Ваш запрос действительно работает нормально. Но максимальная глубина, которую вы можете просмотреть, используя console.log
умолчанию - 2. Вы можете использовать util.inspect
для ее изменения, установите глубину в null
для просмотра полного объекта:
const util = require('util');
.....
console.log('Body: ', util.inspect(body, {depth: null}));