Как исправить этот запрос https с помощью модуля «https» NodeJ? - PullRequest
0 голосов
/ 05 февраля 2019

Я пытаюсь написать скрипт для обнаружения и удаления репозиториев GitHub, который мне больше не нужен, и у меня возникли проблемы с удалением части.

Я написал вспомогательную функцию, которая отправит запрос DELETE на api.github.com и вернет Promise.Но проблема в том, что я получаю 400 Bad Request при использовании этой функции, но этот же запрос прекрасно работает с curl.(Ответ должен быть 204 No Content).

Это версия «https».Переменная пути в порядке, я проверил это.Он возвращает неверный запрос 400.

const deleteRepo = (n, token) => {
    const path = `repos/${n}`
    console.log(path)
    const options = {
        method: 'DELETE',
        hostname: 'api.github.com',
        path,
        headers: {
            'Accept': '*/*',
            'Authorization': `Basic ${Buffer.from(token).toString('base64')}`,
            'User-Agent': 'curl/7.52.1'
        },
    }

    return new Promise((resolve, reject) => {
        const req = https.request(options, res => {
            body = ''
            res.on('data', c => body += c)

            if (res.statusCode == 204) {
                console.log('Deleted ', path)
                res.on('end', () => {
                    reject(body)
                })
                resolve()
            } else {
                console.log('Error deleting ', path, res.statusCode, res.statusMessage)
                res.on('end', () => {
                    reject(body)
                })

            }
            res.on('error', (e) => reject(e))
        });
        req.end()

        console.log(req)
    })
}

Та же функция с curl работает, как и ожидалось, возвращая 204 No Content.

const cmd = `curl -v -u ${token} -X DELETE https://api.github.com/repos/${n}`
console.log('Deleting ', path)
console.log(child_process.execSync(cmd, (e, stdout, stderr)=> {
    if (e) {
        console.error(e);
        throw e;
    }

    console.log('stdout ', stdout);
    console.log('stderr ', stderr);
}))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...