Squeak.ru - шаблоны программирования

Как структурировать серверную часть, чтобы свести к минимуму количество необходимых вызовов аксиом

Я работаю над приложением с Laravel и VueJs. В этом приложении человек может создать событие и может создать участников. У участников есть внешний ключ с именем event_id. После создания события и участников мне нужно соединить имена людей вместе.

Прямо сейчас в моем методе формы в компоненте vuejs мой код структурирован следующим образом:

submitForm() {
    //creates events
    axios.post('/api/event/store', this.form)
        .then(response => {
             //creates participants
             axios.post('/api/participant/massStore', {
                participants: this.participantsForm,
                event_id: response.data.id
              }).then(response => {

                  //pairs participants
                  axios.post('/api/event/pairParticipants');
              })
         });
}

Мне интересно, есть ли лучший способ сделать это, чтобы не иметь столько почтовых вызовов axios? Прямо сейчас я создаю событие в EventController, создаю участников в ParticipantController, а затем связываю участников в EventController. Сопряжение должно быть сделано после того, как все участники были созданы.

Благодарю вас!

26.11.2019

  • Отправьте всю свою информацию в единую конечную точку, а затем выполните цепочку выполнения; вставьте первую информацию, вставьте вторую, затем соедините/свяжите их. По сути, это то, что вы уже делаете, но триггеры разбиваются на AJAX вызовы, когда они, вероятно, не нужны. 27.11.2019
  • Не могли бы вы объяснить этот процесс немного больше? Хотелось бы изучить его. Не могли бы вы привести пример того, как сделать то, что вы предлагаете? 27.11.2019
  • Создайте одну конечную точку, например /event/storeAndMassPair (или аналогичную), определите маршрут и контроллер, который будет обрабатывать эту конечную точку (что-то вроде EventController@postStoreAndMassPair), затем возьмите весь код из трех конечных точек, которые у вас есть в настоящее время, и соедините их с этим методом. Затем убедитесь, что вы публикуете всю правильную информацию (this.form и this.participantsForm), и ваш код использует ввод по мере необходимости. Где бы вы ни вернули ответ json, перейдите к следующему набору логики и вернитесь только тогда, когда все будет сделано. Это немного широкое понятие, так что это лучшее от меня. 27.11.2019
  • Попался. Но разве это не плохая практика? Я бы объединил всю логику, которую можно было бы разделить на контроллеры? Спасибо большое! 27.11.2019
  • Я предпочел бы держать их отдельно, как вы сейчас. Представьте, что в будущем вам нужно объединить в пары участников, которые уже существуют на мероприятии. Если вы соберете все вместе, у вас будет одна из двух вещей: 1) вы больше не можете выполнять эту операцию 2) у вас есть дублированный код, поэтому сопряжение может быть выполнено самостоятельно. Имхо, лучше оставить. Вы можете немного почистить этот js с помощью async await, если это вас беспокоит. 27.11.2019
  • Если вы не хотите смешивать все это вместе, вы можете заставить методы контроллера вызывать другие методы контроллера, но я на самом деле думаю, что это худшая практика, чем другой подход, который я предложил. Но опять же, это открыто для мнения. На этом этапе может быть лучше снова открыть этот вопрос на codereview.stackexchange.com; это место для запроса альтернативных подходов/лучших практик/и т. д. в отношении существующего функционального кода. 27.11.2019

Ответы:


1

Минимизация количества вызовов AJAX с помощью axios действительно зависит от ваших собственных потребностей в данных. Вы также можете вывести JSON на страницу с блейд-серверами для просмотра Javascript.

Если вы хотите ограничить количество создаваемых маршрутов, обратите внимание на такие решения, как Graph QL и эта библиотека.

27.11.2019
Новые материалы

Угловая структура архитектуры
Обратите внимание, что эта статья устарела, я решил создать новую с лучшей структурой и с учетом автономных компонентов: https://medium.com/@marekpanti/angular-standalone-architecture-b645edd0d54a..

«Данные, которые большинство людей используют для обучения своих моделей искусственного интеллекта, поставляются со встроенным…
Первоначально опубликовано HalkTalks: https://hacktown.com.br/blog/blog/os-dados-que-a-maioria-das-pessoas-usa-para-treinar-seus-modelos-de-inteligencia-artificial- ja-vem-com-um-vies-embutido/..

Сильный ИИ против слабого ИИ: различия парадигм искусственного интеллекта
В последние годы изучению и развитию искусственного интеллекта (ИИ) уделяется большое внимание и прогресс. Сильный ИИ и Слабый ИИ — две основные парадигмы в области искусственного интеллекта...

Правильный способ добавить Firebase в ваш проект React с помощью React Hooks
React + Firebase - это мощная комбинация для быстрого и безопасного создания приложений, от проверки концепции до массового производства. Раньше (знаете, несколько месяцев назад) добавление..

Создайте API с помощью Python FastAPI
Создание API с помощью Python становится очень простым при использовании пакета FastAPI. После установки и импорта вы можете создать приложение FastAPI и указать несколько конечных точек. Каждой..

Веселье с прокси-сервером JavaScript
Прокси-серверы JavaScript — это чистый сахар, если вы хотите создать некоторую общую логику в своих приложениях, чтобы облегчить себе жизнь. Вот один пример: Связь клиент-сервер Мы..

Получить бесплатный хостинг для разработчиков | Разместите свой сайт за несколько шагов 🔥
Статические веб-сайты — это веб-страницы с фиксированным содержанием и его постоянным содержанием. Но теперь статические сайты также обрабатывают динамические данные с помощью API и запросов...