Разработка общих библиотек для нескольких приложений в проекте

Проект, который я решил создать будет состоять из трех приложений:

  • Telegram bot
  • API для мобильных приложений
  • Веб приложение

У всех трех приложений будет общая библиотека работы с логикой БД и модель, так сказать единая точка входа:

введите сюда описание изображения

Метод Save возвращает last inserted id, то есть Id нового пользователя.

Предположим, что на стороне SQL возникла исключительная ситуация, мы ее обрабатываем и через out параметры возвращаем код ошибки и сообщение (например, code:150, message:"Error saving user..."

Понятно, что метод Save вернет значение 0, так как пользователь не сохранился. Если в проектах Telegram Bot и Web App мы можем проверить возвращаемое значение на 0 и выдать сообщение об ошибке, то как быть с API? Мне ведь нужно отправить клиенту JSON такого вида:

{
  "code" : 150,
  "message": "Error saving user...."
}

Проекты пишу на C#. Есть несколько вариантов как реализовать универсальное решение: через out параметры, либо через единый у всех методов возвращаемый объект, класс которого будет иметь 3 свойства, Result, Code, Message

Хотелось бы узнать рекомендации к такому подходу разработки приложений


Ответы (1 шт):

Автор решения: Mark Shevchenko

Естественная рекомендация — применять исключения (exceptions).

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

В Web App можно обработчик может показывать страницу со статусом 500. В REST API можно также возвращать статусы 400 или 500 и JSON с описанием ошибки.

Вот документация о том, как встраивать обработчик исключений в приложения Web App или API.

А вот описание, как может выглядеть описание ошибки в JSON. Это из набора соглашений, который называется JSON API.

→ Ссылка