Skip to content

viterobk/vitube-api

Repository files navigation

vitube-api

Запуск

Для локального запуска приложения нужен Docker.

Если приложение ранее запускалось и в докере остались images и volumes, можно запустить команду make cleandocker, чтобы все это удалить, или удалить вручную, используя приложение Dcoker.

Чтобы запустить приложение, нужно:

  • сбилдить приложение yarn build:development или yarn watch. Во втором случае, дальнейшие шаги нужно предпринимать в новом окне терминала.
  • развернуть приложение в контейнерах docker compose up.

Архитектура

Архитектура приложения состоит из трех основных слоев:

  • Routes - определяет какие сервисные функции вызывать для каких эндпоинтов. Имеет доступ к сервисам.
  • Services - содержит основную бизнес логику. Принимает данные от слоя Routes, обрабатывает их и возвращает новые данные в тот же слой. Имеет доступ к другим сервисам и репозиториям.
  • Repositories - обеспечивает доступ к хранимым данным. На выходе оперирует исключительно объектами. Имеет доступ только к другим репозиториям.

Routes (Маршруты)

Маршруты находятся в папке ./routes. Для добавления маршрута (маршрутов), надо создать модуль, который возвращает массив объектов релизующих IRouteOptions. Для получения такого обхекта надо создать экземпляр класса Route, задать настройки, используя цепочку вызовов, в конце которой вызвать метод build:

import { Route } from "../core/Route";

export default [
    new Route()
        .path('/users')
        .method('get')
        .useAuth(true)
        .permission('admin')
        .argsConverter((req, res) => ({ req }))
        .handler((req) => {
            // . . .
        })
        .build(),
    // . . .
]

Для доступа к сервисам внутри хендлера надо использовать второй параметр, содержащий контекст хендлера. В контексте, также, содержится информация о пользователе, полученная при аутентификации:

new Route()
    // . . . 
    .handler((args, context) => {
        const { services, user } = context;
    })
    .build(),
// . . .

Services (Сервисы)

Repositories (Репозитории)

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published