Я пытаюсь использовать REST API tiny.cc из Node, но, похоже, столкнулся с проблемой, поскольку сервер всегда отвечает сообщением «Отсутствуют входные параметры».
var message = JSON.stringify({
"urls": [
{
"long_url": "http://example.com",
}
]
});
var https_options = {
host: 'tinycc.com',
path: '/tiny/api/3/urls/',
port: 443,
method: 'POST',
headers: {
'Authorization': 'Basic XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX',
'Content-Length': message.length
}
}
var req = https.request(https_options,res => {
var msg = '';
res.on('data',d => msg += d);
res.on('end',() => {
console.info('end',JSON.parse(msg));
});
});
req.on('error',e => console.info('tinyURL error',e));
req.write(message);
req.end();Ответ всегда
{
error: {
code: 1305,
message: 'Missing input parameters',
details: ''
},
version: '3.1'
}


![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Я не знаю, какую библиотеку вы используете для вызова API, но я думаю, вам будет лучше использовать запрос и включить полезную нагрузку в качестве тела вашего почтового запроса, а не использовать более ручной метод записи в запрос.
var message = {
"urls": [
{
"long_url": "http://example.com",
}
]
};
var options = {
host: 'tinycc.com',
path: '/tiny/api/3/urls/',
port: 443,
method: 'POST',
body: message,
json: true,
headers: {
'Authorization': 'Basic XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX',
'Content-Length': message.length,
"Content-Type": "application/json"
}
}
request(options, console.info)
tiny cc ответил - мне не хватало 'Content-Type': 'application/json'.
@ user3094755 как @ Danielo515 отображается в ответе json: true не работает?
Вполне возможно, что json: true в библиотеке запросов имеет тот же эффект, что и добавление Content-Type: 'application / json' '', но мне не нужно было добавлять библиотеку запросов.
Да, добавление JSON true должно правильно настроить запрос. Библиотека запросов хороша тем, что она правильно заботится о многих деталях. Не уверен, наконец, что у вас это работает или нет
Вы могли бы быть здесь - покупайте, я включаю все, что требуется крошечной документацией cc (ей нужны только Auth и long_url).