frost18
@frost18
Программист PHP

Правильно ли использовать node.js в качестве rest api сервера?

Планирую писать real-time веб приложение на Angular. Это будет мой первый опыт написание SPA приложения. Думаю как реализовать api. Первый вариант на Symphony или yii2, в этом у меня опыт есть. Второй вариант написать api на node.js с использованием Express.
Преимущества в node.js я вижу в его асинхронности и одним процессом, что даст преимущества в большом количестве подключений и хорошей скорости обработки запросов, так же один язык (js на клиенте и сервере), json не надо конвертировать, и веб сокеты из коробки поддерживаются.
Теперь к моим вопросам.
1) Какая польза в его асинхронности если при обращении к api нужно залезть в базу, дождаться ответа от нее и потом вернуть данные? (api это почти всегда обращение к базе или кэшу, и ответ все равно придется ждать)
2) Я буду использовать реляционную БД (mySQL или PostgreSQL). Я понимаю что node.js хорошо работает с MongoDb, но она мне не подходит. Будут ли у меня проблемы с драйверами или ORM, и хорошая ли это практика?
3) Стоит ли в моем случаи вообще использовать node.js или пойти по первому варианту и использовать PHP?
  • Вопрос задан
  • 663 просмотра
Пригласить эксперта
Ответы на вопрос 3
index0h
@index0h
PHP, Golang. https://github.com/index0h
в его асинхронности и одним процессом

Тут нет преимущества, это обычный маркетинг))

что даст преимущества в большом количестве подключений

Асинхронность ни как не помогает в обработке большого количества подключений

хорошей скорости обработки запросов

Это чисто ваша задача

json не надо конвертировать

При передачи данных другому приложению - таки надо будет

веб сокеты из коробки поддерживаются

Вас обманули, из коробки поддержки ws ни в express ни в nodejs нет

Какая польза в его асинхронности если при обращении к api нужно залезть в базу, дождаться ответа от нее и потом вернуть данные?

Да как бы никакой))

Будут ли у меня проблемы с драйверами или ORM, и хорошая ли это практика?

Будут сложности в поддержке

Стоит ли в моем случаи вообще использовать node.js или пойти по первому варианту и использовать PHP?

Смысла нет.
Ответ написан
Комментировать
@dmitrygavrish
1) "Польза" асинхронности в том, что запрос к БД будет неблокирующим, т.е. не будет блокировать выполнение кода нодой пока БД обрабатывает запрос и формирует ответ

2) node.js все равно, с какой БД вы работаете, для того же постгреса есть множество готовых модулей:
https://www.npmjs.com/package/pg
https://www.npmjs.com/package/pg-promise
https://www.npmjs.com/package/pg-format
ORM:
https://www.npmjs.com/package/sequelize

3) Если ваша цель - написать приложение за минимальное кол-во времени и приложив минимальное кол-во усилий, то пишите на том, в чем вы разбираетесь. Если хотите прокачать скилы в другой области (языке/платформе/...), то можете взять node.js, как вариант.

П.С. нода, в отличие от ПХП, может хранить состояние в рамках всей жизни запущенного процесса (в т.ч. и в кластере), что может существенно облегчить задачу создания приложения на веб-сокетах, если вам потребуется работа с таймерами
Ответ написан
Комментировать
Node JS активно используют в качестве REST API, вот даже какието фреймвоки есть
https://sailsjs.com/, кроме того реляционная база вполне умеет держать несколько конектов и обрабатывать несколько запросов, так что каким образом она может мешать асинхронности не пойму.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы