Разработка общих библиотек для нескольких приложений в проекте
Проект, который я решил создать будет состоять из трех приложений:
- 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 шт):
Естественная рекомендация — применять исключения (exceptions).
В случае возникновения ошибки надо выбрасывать исключение с помощью оператора throw. В подавляющем большинстве случаев можно обрабатывать все исключения программы на самом высоком уровне.
В Web App можно обработчик может показывать страницу со статусом 500. В REST API можно также возвращать статусы 400 или 500 и JSON с описанием ошибки.
Вот документация о том, как встраивать обработчик исключений в приложения Web App или API.
А вот описание, как может выглядеть описание ошибки в JSON. Это из набора соглашений, который называется JSON API.
