Основанная на обещаниях 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 (быстрая реализация обещаний), чтобы обернуть методы стиля обратного вызова.