Size: a a a

JavaScript.Ninja

2021 June 05

IE

Ilia Eliseev in JavaScript.Ninja
Даже вот попроще пример без map'а. Как видите, тут нет вообще никаких await'ов. По сути тот же код, что и с async/await
источник

MM

Mikita Melnikau in JavaScript.Ninja
Тут видно как в axios запретили интерцепторы, а у undefined появился метод push?
источник

ЯС

Ярослав Семенов... in JavaScript.Ninja
Я это понимаю, но мне кажется это дорогая операция создавать new promise в цикле, поэтому и задал вопрос в группу в поисках самого лучшего способа работы с асинхронным кодом в цикле
источник

IE

Ilia Eliseev in JavaScript.Ninja
Про undefined - да, а вот причем тут интерцепторы - хз. Мы тут все дружно пытались разобраться, почему async-функции в map не блочит поток.
источник

IE

Ilia Eliseev in JavaScript.Ninja
А в чем, собственно, дороговизна?
источник

IE

Ilia Eliseev in JavaScript.Ninja
Просто, если тебе нужно вызвать все эти запросы, то как ни крути, тебе надо обойти все элементы и создать эти промисы.
источник

AS

Alexey Shultsev in JavaScript.Ninja
Товарищи, всем привет.
Работал ли кто-то из вас со Stripe API?
Я пытаюсь сделать POST-запрос на снятие средств, но в ответе на запрос возвращается 400-BadRequest.
Не понимаю что именно я делаю не так.
Код приведен ниже:
const payload = new URLSearchParams({
 amount: '1234',
 currency: 'czk'
});
const strPayload = payload.toString();

const options = {
 'protocol': 'https:',
 'hostname': 'api.stripe.com',
 'method': 'POST',
 'path': '/v1/charges',
 'headers': {
   'Authorization': `Bearer ${SECRET_KEY}`,
   'Content-Length': Buffer.byteLength(strPayload),
   'Content-Type': 'application/x-www-form-urlencoded',
   'Stripe-Account': ACCOUNT_ID,
 },
};

const makeRequest = () => {
 const req = https.request(options, (res) => {
   const { statusCode, statusMessage } = res;
   console.dir({ statusCode, statusMessage });
 });
 req.on('error', console.log);
 req.write(strPayload);
 req.end();
};

makeRequest();
источник

IK

Illya Klymov in JavaScript.Ninja
А сообщение какое?
источник

AS

Alexey Shultsev in JavaScript.Ninja
что вы имеете ввиду?
источник

IK

Illya Klymov in JavaScript.Ninja
Там в теле есть текстовое сообщение у ответа
источник

IK

Illya Klymov in JavaScript.Ninja
Кроме кода ответа
источник

AS

Alexey Shultsev in JavaScript.Ninja
{ statusCode: 400, statusMessage: 'Bad Request' }
источник

AS

Alexey Shultsev in JavaScript.Ninja
я их и вывожу в консоль в колбэке
источник

IK

Illya Klymov in JavaScript.Ninja
Тогда не подскажу, у аккаунта точно пермишны на снятие средств есть?
источник

AS

Alexey Shultsev in JavaScript.Ninja
точно, через curl всё работает
источник

AS

Alexey Shultsev in JavaScript.Ninja
запрос вида
curl https://api.stripe.com/v1/charges \
 -u sk_test_{MY_TEST_KEY}: \
 -d amount=2000 \
 -d currency=czk \
 -d source=tok_visa \
 -d description="My First Test Charge (created for API docs)"
обрабатывается корректно, проверял многократно
источник

AS

Alexey Shultsev in JavaScript.Ninja
более того, дока страйповская гласит, что в тестовом режиме эти транзакции - "липовые", но сервер "подыгрывает" - он на них отвечает так, как если бы это была настоящая операция
источник

II

Ilya Izilanov in JavaScript.Ninja
req.write(strPayload) - вам точно надо urlparams в body?
источник

AS

Alexey Shultsev in JavaScript.Ninja
Не знаю, но дока cURL говорит, что его -d key=value делает тоже, что и склеивание параметров запроса в строку
То есть строка, передаваемая в качестве полезной нагрузки, идентична той, которую под капотом у себя делает cURL

Опять же - через cURL все работает
А через ноду нет
источник

II

Ilya Izilanov in JavaScript.Ninja
вот именно что в курле это будут url params, а в ноде вы отправляете запрос с body вида key=value, если я не ошибаюсь
источник