Ответы пользователя по тегу API
  • JS API и REST API - это разные понятия?

    MarcusAurelius
    @MarcusAurelius Куратор тега Node.js
    автор Impress Application Server для Node.js
    1. REST не имеет ни какого отношения к CURL.
    2. Устоявшегося понятия JS API не существует, оно сложилось исключительно у Вас в голове.
    3. Противоположностью REST (и STATEless) есть STATEful, т.е. связь без состояния и с состоянием. Без состояния каждый запрос отдельный и не переводит сервер в другое состояние, не переводит само соединение (или сессию) в состояние и не переводит клиента в другое состояние. На самом деле, практически все, что называется REST им не является, см. мою статью habrahabr.ru/post/204958
    4. Скорее всего Вы хотите спросить про противопоставление HTTP API и RPC API. В отличие от HTTP API (которое обычно называют по незнанию или запудрпенности мозгов REST API) удаленный вызов процедур (RPC API) для можно делать на базе TCP, UDP, TLS или эмулировать для веба на WebSocket или HTTP+SSE или других протоколах.
    Ответ написан
    2 комментария
  • Repository или CQRS?

    MarcusAurelius
    @MarcusAurelius
    автор Impress Application Server для Node.js
    Вот так всегда, очаровались красивой идеей, где-то что-то понравилось, руки чешутся применить... А нужно оно или не нужно... Отталкивайтесь от того, что хотите сделать, а Вы об этом так и не рассказали, и уже потом можно переходить к тому, какую парадигму выбрать, потом выбирать паттерны, фреймворки, библиотеки (но лучше как можно меньше их конечно). Вот для чего Вам CQRS? Что он будет решать и почему без него не лучше? Вы не сможете ответить на эти вопросы если не будете идти от задачи. А потом так и выходит: "что не напишу - все контроллер выходит, это наверно потому, что я все время думаю о контроллерах" )))
    Ответ написан
    Комментировать
  • Архитектура проекта для инвестора?

    MarcusAurelius
    @MarcusAurelius
    автор Impress Application Server для Node.js
    Ну... в Вашем случае, главное, чтобы инвестор не читал Тостер, а архитектуру можно сделать и после завершения проекта ))) А вообще моя лекция по архитектуре для ноды (но в ней есть много общих вопросов и полезных мыслей): https://youtu.be/Try7lmWikao И на Хабре есть специальный раздел "Анализ и проектирование систем" где проскакивают статьи по архитектуре, как например: habrahabr.ru/post/204958 Нарисуйте связь компонентов системы СУБД-сервер-клиент (трехзвенка, или больше компонентов, если есть), нарисуйте уровни по ISO/OSI, слои абстракций, дайте спецификацию API. Вот тут есть я даю расширенный план проектирования, он должен помочь: Как составить план проектирования проекта?
    Ответ написан
    Комментировать
  • Правильно это когда "Stateful"?

    MarcusAurelius
    @MarcusAurelius Куратор тега Node.js
    автор Impress Application Server для Node.js
    MVC это бред для SPA (одностраничных приложений), он не подходит для разработки сервера, когда сервер связывается с клиентом через API и обменивается данными в JSON (или другом формате). Может еще вот эти две мои лекция помогут https://youtu.be/Try7lmWikao и https://youtu.be/0oIiPJtfUpw Там не все по этой теме, но ответы на Ваши вопросы, надеюсь, есть.
    Ответ написан
    1 комментарий
  • Javascript backend frameworks or vanilla js?

    MarcusAurelius
    @MarcusAurelius Куратор тега Node.js
    автор Impress Application Server для Node.js
    Посмотрите вот этот мой развернутый ответ: Подсоветуйте фреймворк для node?
    Инструментов можно набрать тут: nodeframework.com и тут https://github.com/sindresorhus/awesome-nodejs и тут https://github.com/vndmtrx/awesome-nodejs

    По БД рекомендую MongoDB, если у Вас данные аморфные, сложной или часто изменяющейся структуры с этими драйверами: https://www.npmjs.com/package/mongodb А если данные имеют редко меняющующуюся структуру и хорошо ложатся в таблицы, то берите реляционку, лучше PostgreSQL, с драйверами: https://www.npmjs.com/package/pg Но я не люблю и не рекомендую ORM, обычно от них больше проблем, тормозов и дополнительной работы больше, чем выгоды от их внедрения. Если уж приспичит, то для монги есть mongoose: mongoosejs.com это ODM, аналог ORM для документных баз, а для PG есть много вариантов, которые основаны на том же драйвере pg.

    Паттерн MVC он вообще изначально был изобретен для графических интерфейсов пользователя, и там он еще как-то себя оправдывает, да и то кривенько, почитайте эти мои статьи: habrahabr.ru/post/204958 и habrahabr.ru/post/117791 Для ноды это вообще противоестественно. GUI и бекенд должны быть разделены сетевым API, на которое вешаются что мобильные приложения, что браузерные, что оконные, это уже без разницы.
    Ответ написан
    Комментировать
  • Как в NodeJS сделать EventEmitter для нескольких одновременных запросов?

    MarcusAurelius
    @MarcusAurelius Куратор тега Node.js
    автор Impress Application Server для Node.js
    https://github.com/caolan/async
    async.series({
      one: function(callback) {
        setTimeout(function() {
          callback(null, 1);
        }, 200);
      },
      two: function(callback) {
        setTimeout(function() {
          callback(null, 2);
        }, 100);
      }
    },
    function(err, results) {
      // results is now equal to: { one: 1, two: 2 }
    });
    Ответ написан
  • Как и где найти модули для Node.js для организации кошерного REST API?

    MarcusAurelius
    @MarcusAurelius Куратор тега Node.js
    автор Impress Application Server для Node.js
    REST есть величайшее мракобесие и маразм всех времен и народов. Берите RPC, как советуют. На голом примитивном механизме HTTP с его недоразвитым набором глаголов POST, GET, PUT, DELETE, которые невозможно расширить и кастомизировать, сложно разработать что-то более сложное, чем работа с файлами или с записями базы данных по принципу CRUD (CREATE, READ, UPDATE, DELETE). Когда же нужно сделать хоть что-то большее, над ресурсом, ввести свой глагол, то вся идеология рушится. Например, у меня есть нефтепровод с магистральными насосными агрегатами, и нужно управлять закрытием и открытием задвижек, параметрами регуляторов давления, мониторингом катодной защиты, другими подсистемами. Эти команды через POST или PUT посылать? Смешно, да? Тут нужно 5000 глаголов/методов ввести над 20ю ресурсами, а не 4 несчастных глагола над несчетным кол-вом ресурсов. Или даже над данными в БД мне нужно новые глаголы, например, хочу создать связь между двумя объектами или дать права пользователю на изменение параметра объекта или запустить отложенную задачу генерации отчетов на сервере, просто запустить и получить в ответ прогнозируемое время завершения, как это сделать на REST? Я уже не говорю о том, что операции могут быть вообще не над ресурсами. Операции могут быть над множествами, запросами (фильтрами, выборками, курсорами), над машиной состояний, над связями между несколькими ресурсами, над системой в целом или вообще над потоками данных, событий или технологическим оборудованием.
    Ответ написан
    5 комментариев