Основанная на обещаниях node http framework?

Node обычно работают через обратные вызовы (err, result).

Существует ли основанная на обещаниях инфраструктура http для Node, со здоровым сообществом и в активной разработке (например, экспресс)?

Ответы

Ответ 1

На стороне клиента HTTP есть новый fetch API https://fetch.spec.whatwg.org/

fetch() позволяет создавать сетевые запросы, похожие на XMLHttpRequest (XHR). Основное отличие заключается в том, что [it] использует Promises, что позволяет использовать более простой и понятный API, избегая обратного вызова ада и помня сложный API XMLHttpRequest

(https://developers.google.com/web/updates/2015/03/introduction-to-fetch)

Некоторые реализации:

Вот пример кода:

fetch('/some/url', {method: 'get'})
  .then(function(response) {
    // rejoice \o/
  })
  .catch(function(err) {
    // error :-(
  });

Ответ 2

Существует https://github.com/mzabriskie/axios

Клиент HTTP на основе Promise для браузера и node.js

Пример кода:

// Make a request for a user with a given ID
axios.get('/user?ID=12345')
  .then(function (response) {
    console.log(response);
  })
  .catch(function (response) {
    console.log(response);
  });

Ответ 3

У меня был тот же вопрос, который у вас был сегодня, и я нашел q-io, также kriskowal. Он использует Q.js для обездвиживания файловой системы io, а также для сервера и http-клиента.

Я еще не пробовал, но на данный момент он определенно не имеет активного сообщества, построенного вокруг него. Грустно видеть, в мире, заполненном обратными пирамидами гибели.

Ответ 4

Вам может быть интересно Joey, написанное Крисом Ковалом, автором библиотеки обещаний Q. Там нет большого сообщества, но Крис часто находится на канале #montage irc на freenode, чтобы предложить помощь.

Ответ 5

Все еще не совсем даже в конце 2016 года.

Другие пропустили Koa.js, который поддерживает promises для своего генератора, основанного на async/await.

Тем не менее, я думаю, что ваш вопрос нацелен на гораздо более глубокую интеграцию, которая может быть тем, что я сделал: http-сервер, который возвращает запросы как promises, которые затем могут быть соединены вместе.

Это основано на идее, что promises представляют асинхронные задачи, которые могут когда-то выполняться, поэтому сервер похож на поток promises, который я инкапсулировал в обратный вызов, вызванный обещанием.

Это еще более крутой потенциал (т.е. для небольших специализированных проектов), поскольку для него очень мало кода (а текущая концепция находится в 0 зависимостях)

Более подробно об этом в репозитории: https://github.com/rsxdalv/unframed который включает в себя сквозной процесс строительства. С кодом, который действительно может быть запущен Node.js v6.6

Ответ 6

Для HTTP-клиентов мне нравится http://www.npmjs.org/package/httpinvoke.

Для HTTP-серверов мне нравится https://github.com/mjackson/mach; это здорово!

И снова я тоже не такой огромный фанат httpinvoke, я работаю, и все в порядке. Но я думаю, что API сложнее, чем нужно, и мне трудно отлаживать. Возможно, я что-то пропустил.

В качестве альтернативы, я рекомендую kew (быстрая реализация обещаний), чтобы обернуть методы стиля обратного вызова.