Как организовать услуги в express - PullRequest
1 голос
/ 26 апреля 2020

Я пытаюсь настроить сервер express и организовать в нем структуру проекта. Я прочитал много статей о том, как создать «пуленепробиваемую» структуру проекта.

В настоящее время я застрял на уровне сервисов и не знаю, как организовать сервисы, чтобы они могли масштабироваться в будущем. .

Позвольте мне показать, что я имею в виду

Я ожидаю, что в моем приложении будет использоваться аутентификация с использованием сеансовых файлов cookie. Также каждый пользователь будет иметь свой профиль и возможность изменять любую информацию своего профиля, включая пароль, адрес электронной почты и т. Д. c.

В настоящее время я не знаю, какая информация является частью какой службы.

Если это будет похоже на (конечная точка -> служба)

/auth/login -> AuthService
/auth/logout -> AuthService
/auth/register -> AuthService

/session/terminate-specific-session -> SessionService
/session/terminate-all-sessions -> SessionService
/session/terminal-all-session-expect-this-one -> SessionService

/user/change-password -> UserService

или все эти вещи принадлежат AuthService. Должен ли я разделить сеанс и аутентификацию, или это должно быть внутри одного сервиса. Или я должен создать AccountService, который будет отвечать за обработку всего аккаунта, или нет ... Я буквально напутал

Я хотел бы узнать ваши мысли о том, как организовать услуги и их ответственность

Большое спасибо

1 Ответ

2 голосов
/ 26 апреля 2020

Во-первых, не задумывайтесь над этим или не проектируйте его на этом этапе. Вам следует серьезно задуматься о дизайне вашего URL-адреса и о том, каким именно образом вы хотите, чтобы ваш URL-адрес был долгосрочным, потому что он виден внешнему миру, может быть задействован во многих HTML страницах, пользовательских закладках и во всем этом. и может быть боль, чтобы изменить.

Но, ваша внутренняя разметка файлов не имеет большого значения, если вы немного увеличитесь в будущем и захотите изменить разметку. Менее чем за 5 минут вы можете создать новый маршрутизатор, удалить 3-5 маршрутов из предыдущего файла и подключить новый маршрутизатор. Таким образом, такие изменения в будущем легко и просто вносить.

Во-вторых, под словом «сервис» я буду подразумевать маршрутизатор или группу маршрутов на маршрутизаторе, поскольку термин «маршрутизатор» Express использует (Express вообще не использует термин сервис).

В-третьих, я думаю, что проект на самом деле сложнее, чем нужно, если вещи изначально помещаются в миллионы крошечных файлов с миллионы маленьких роутеров. Дизайн URL должен планироваться на будущее, но макет файла не должен предвидеть все возможные изменения в будущем.

Логически кажется, что маршруты /auth и маршруты /session - это все действительно об аутентификации. Если бы у вас было только несколько маршрутов, которые вы показываете, я бы организовал их в один файл, поскольку они могут использовать общий код и общий импорт и, возможно, использовать в этом файле маршрутизатор /auth и /session.

Маршрут /user выглядит так, как будто он может иметь другие маршруты, связанные с (изменение пользовательских настроек и тому подобное), поэтому я, вероятно, поместил бы его в свой собственный файл и маршрутизатор и затем мог бы добавить другие маршруты /user в это идет вперед.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...