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?
  • Вопрос задан
  • 252 просмотра
Пригласить эксперта
Ответы на вопрос 3
index0h
@index0h
PHP, Golang. https://youtube.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/, кроме того реляционная база вполне умеет держать несколько конектов и обрабатывать несколько запросов, так что каким образом она может мешать асинхронности не пойму.
Ответ написан
Ваш ответ на вопрос

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

Войти через TM ID
Похожие вопросы
14 авг. 2018, в 22:43
350 руб./за проект
14 авг. 2018, в 19:03
10000 руб./за проект
14 авг. 2018, в 18:10
1000 руб./в час