Задать вопрос
@fnzr

Подключение Яндекс переводчик API v2 на NODEJS?

Добрый день
Сможет ли кто-то помочь с подключением Яндекс переводчик API v2 на nodejs?
В документации есть вариант на python, но при попытке переписать для nodejs результата нет.
https://cloud.yandex.ru/docs/translate/operations/...

Рабочий вариант на python
import requests

IAM_TOKEN = 'XXXXX'
folder_id = 'XXXXX'
target_language = 'ru'
texts = ["Hello", "World"]

body = {
    "targetLanguageCode": target_language,
    "texts": texts,
    "folderId": folder_id,
}

headers = {
    "Content-Type": "application/json",
    "Authorization": "Bearer {0}".format(IAM_TOKEN)
}

response = requests.post('https://translate.api.cloud.yandex.net/translate/v2/translate',
    json = body,
    headers = headers
)

print(response.text)


И не рабочий вариант на NODE
const axios = require("axios");


const IAM_TOKEN =
  "XXXXXX";
const folder_id = "XXXXXX";
const target_language = "ru";
const texts = ["Hello"];


let headers = {
  "Content-Type": "application/json",
  "Authorization": `Bearer ${IAM_TOKEN}`,
};

let body = {
  targetLanguageCode: target_language,
  texts: texts,
  folderId: folder_id,
};



const response = axios.post("https://translate.api.cloud.yandex.net/translate/v2/translate", 
  json = JSON.stringify(body),
  headers = headers
)

console.log(response.text);


По ответу понятно, что я не передаю токен в API, но на каком моменте не могу понять. Либо не правильно создал headers либо неверный метод post
message: 'IAM token or API key has to be passed in request'
response:
status: 401,
statusText: 'Unauthorized'

Может кто-то сталкивался? Или сможет корректно переделать код с python?
  • Вопрос задан
  • 759 просмотров
Подписаться 1 Простой 1 комментарий
Пригласить эксперта
Ответы на вопрос 1
yarkov
@yarkov Куратор тега JavaScript
Помог ответ? Отметь решением.
const response = axios.post("https://translate.api.cloud.yandex.net/translate/v2/translate", 
  // Это что за новый синтаксис такой?
  json = JSON.stringify(body),
  headers = headers
)


const response = axios.post("https://translate.api.cloud.yandex.net/translate/v2/translate", {
  body: JSON.stringify(body), // В необходимости JSON.stringify тоже не уверен
  headers: headers
})


P.S. В response будет промис в таком случае. Перепишите на async/await
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы