$(document).ready(function () {
let url = "https://translate.yandex.net/api/v1.5/tr.json/detect?key=trnsl.1.1.20150402T131655Z.e753695703b45806.bda2fd6beb5bd56a62f0034352aaebbdba3f0952&text=hey";
let res = fetch(url, {
method: 'POST',
headers: new Headers({
'Content-Type': 'application/x-www-form-urlencoded'
})
});
});
Это мой запрос. Выглядит как GET
, верно? Проблема в том, что если я пытаюсь хоть один параметр запихнуть в Body, то запрос возвращает Bad Request
.
let url = "https://translate.yandex.net/api/v1.5/tr.json/translate";
let res = fetch(url, {
method: 'POST',
body:JSON.stringify({key:"trnsl.1.1.20150402T131655Z.e753695703b45806.bda2fd6beb5bd56a62f0034352aaebbdba3f0952", lang:"en-ru", text:"hello"}),
headers: new Headers({
'Content-Type': 'application/x-www-form-urlencoded'
})
}).then(ok=>console.log(ok.json()));
В документации есть пример, где сам URL
со всеми параметрами, кроме text
. Окей, я и так сделал. Все равно не работает:
let url = "https://translate.yandex.net/api/v1.5/tr.json/translate?key=trnsl.1.1.20150402T131655Z.e753695703b45806.bda2fd6beb5bd56a62f0034352aaebbdba3f0952&lang=en-ru";
let res = fetch(url, {
method: 'POST',
body:JSON.stringify({text:"hello"}),
headers: new Headers({
'Content-Type': 'application/x-www-form-urlencoded'
})
}).then(ok=>console.log(ok.json()));
Задал body в явном виде, так же как у них в документации:
let url = "https://translate.yandex.net/api/v1.5/tr.json/translate?key=trnsl.1.1.20150402T131655Z.e753695703b45806.bda2fd6beb5bd56a62f0034352aaebbdba3f0952&lang=en-ru";
let res = fetch(url, {
method: 'POST',
body:'text:hello',
headers: new Headers({
'Content-Type': 'application/x-www-form-urlencoded'
})
}).then(ok=>console.log(ok.json()));
Можете проверить в консоли. Что я делаю не так? Я так понимаю, что в POST параметры должны быть в body, а не в строке запроса?
И это вроде бы не ограничение в кол-ве символов - до 1млн я еще точно не дошел
Благодаря @УстьянцевБорис, ответ для моего случая был найден крайне просто: Надо писать body:'text=hello'. Знак равно вместо двоеточия.
Update: Благодаря @Grundy, я нашел полный ответ.
Вот рабочий пример:
let url = "https://translate.yandex.net/api/v1.5/tr.json/translate";
let res = fetch(url, {
method: 'POST',
body:'key=trnsl.1.1.20190419T144929Z.9a7ce55bcbc0ab3a.7b061e1931fe57955befd67ab7151772bed63f0f&lang=en-ru&text=hello',
headers: new Headers({
'Content-Type': 'application/x-www-form-urlencoded'
})
}).then(ok=>console.log(ok.json()));
Для Content-Type: application/x-www-form-urlencoded
, тело нужно задать в виде key1=value1&key2value2
.
Про контент-типы для POST: ссылка
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Столкнулся с такой проблемойУ меня есть функция (для вопроса упростил ее очень сильно):
Не могу связать воедино разрозненные (возможно поверхностные знания), помогите пожалуйста!