Процессоры в RESTful API: использовать нельзя выбросить
При планировании разработки механизма RESTful API была идея использовать стандартные процессоры. Плюсы очевидны — готовый код для CRUD с проверками прав и лексиконами. Кроме того, более простая интеграция с дополнениями. Ведь они тоже работают через процессоры. Т.е. их серверную часть переписывать не нужно. По крайней мере, не всю.
Ответ кодируется в JSON со своим форматом. А значит его нужно раскодировать. Получается двойная работа: массив -> json -> массив.
В работе процессора заложено множество проверок с выводом ошибок — проверка прав доступа, beforeQuery(), beforeSave(),saveObject(), beforeRemove(), обработка результатов работы плагинов и т.д. И все они выводят просто сообщение без кода ошибки. Т.е. нельзя отличить ошибку «Permission denied», у которой код 403, от любой другой четырёхсотой.
Механизм процессоров, насколько я могу судить, в двойке и тройке отличаются. Т.е. данный компонент будет зависеть от версии. Хоть я и не верю в выход третьей версии, всё же я не отрицаю тот факт, что это не зависит от моей позиции. Поэтому нужно универсальное решение. Не увидел отличий.
Ну и наконец, сам код, который безумно далёк от современных стандартов. А местами и попахивает.
Это из того, что лежит на поверхности. Уверен, дальше возникнут ещё моменты. Но главный вопрос следующий — стоит ли всё-таки использовать процессоры? С одной стороны плюсы сильно сокращают количество работы. С другой — решение будет не полностью соответствовать стандартам PSR и JSON:API. Ну и полностью не соответствовать главной идее — максимально дистанцироваться от ядра, чтобы не зависеть от «хозяев» MODX.
Ох, как сейчас не хватает голосовалки. В общем, попробую сформулировать вопросы:
Что смущает?
В некоторых базовых и пользовательских процессорах заложена специфика ExtJs. Не критично, но загрязняет код.Ответ кодируется в JSON со своим форматом. А значит его нужно раскодировать. Получается двойная работа: массив -> json -> массив.
В работе процессора заложено множество проверок с выводом ошибок — проверка прав доступа, beforeQuery(), beforeSave(),saveObject(), beforeRemove(), обработка результатов работы плагинов и т.д. И все они выводят просто сообщение без кода ошибки. Т.е. нельзя отличить ошибку «Permission denied», у которой код 403, от любой другой четырёхсотой.
Ну и наконец, сам код, который безумно далёк от современных стандартов. А местами и попахивает.
Это из того, что лежит на поверхности. Уверен, дальше возникнут ещё моменты. Но главный вопрос следующий — стоит ли всё-таки использовать процессоры? С одной стороны плюсы сильно сокращают количество работы. С другой — решение будет не полностью соответствовать стандартам PSR и JSON:API. Ну и полностью не соответствовать главной идее — максимально дистанцироваться от ядра, чтобы не зависеть от «хозяев» MODX.
Ох, как сейчас не хватает голосовалки. В общем, попробую сформулировать вопросы:
- Использовать процессоры как есть.
- Писать свои процессоры на основе modProcessor.
- Вообще не использовать механизм процессоров. Писать свой механизм по стандартам PSR с использованием шаблонов проектирования.
- Хозяин — барин. Делай как считаешь нужным.
Комментарии: 17
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
Просто для того, чтобы максимально быстро достичь некоего рабочего этапа.
Если процессор позволяет выполнить действие — пусть работает.
А если не позволяет, значит идти другим путем, писать самому это действие.
Боюсь большой объем работы просто застопорит все.
Кстати, если писать с нуля, ну по факту будут написаны аналоги процессоров, просто с другими «что смущает», которые будут подогнаны именно под это апи.
По поводу 1 варианта, он может хорошо выстрелить, так как можно будет очень быстро сделать рабочее решение на современных фреймворках + все имеющиеся дополнения MODX. То есть тот же miniShop2 заюзать, например, с react или vue. Вся логика бэка уже написана, посылай только rest запросы и будет счастье. Но это опять тянет за собой совместимость, от которой в данном случае, я считаю, нужно отказаться.
Но и они могут у себя где-то внутри вызывать процессоры MODX для работы. Это даст быстрый старт, а потом эти места можно будет улучшить и переписать.
Просто ты ответил немного неопределённо —
То ли за третий, то ли за второй.
П.С. Надо было сделать четыре комментария с каждым вариантом и за них голосовать. Эмулировать опрос. Стормозил чутка.
Голосование ни к чему, решать всё равно тебе.