Инструкции по разработке и дополнении проекта.
Весь проект можно условно разделить на две части.
- REST API - общедоступный API для управления очередями
- Backend - одна из возможных реализаций этого API
В этом проекте рассматривается первый из них, интерфейс для манипуляции очередями. А реализациями могут случить как отдельные веб-приложения, как и просто приложения или даже боты.
Сервис расположен на платформе (PaaS) Heroku
Разворачивается по запросу, а не по веб-хукам из гит репозитория (Automation deploy)
Как было указано в Getting Started в проекте используется версия Spring Boot 2.1.8
Конфигурирование ендпоинтов через JavaConfig:
Пример:
@RequestMapping("/api/badges")
@RestController
public class BadgesApi {
@PutMapping
public Object putBadge(
HttpServletResponse response,
@RequestParam("username") String username,
@RequestParam("access_token") String accessToken,
@ApiParam("Badge's name like developer, teacher and etc.")
@RequestParam("badge_name") String badgeName
){ ... }
}
Для генерирования автоматической документации используется Swagger, а именно:
<!-- https://mvnrepository.com/artifact/io.springfox/springfox-swagger2 -->
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
<version>2.9.2</version>
</dependency>
<!-- https://mvnrepository.com/artifact/io.springfox/springfox-swagger-ui -->
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger-ui</artifactId>
<version>2.9.2</version>
</dependency>
Настраиваться документация через аннотации. Подробнее
Директория | Назначение |
---|---|
/api |
Здесь находятся ендпоинты с маппингом, а также вспомогательным Utility-классы |
/config |
Конфигурации развертывания Spring-приложения |
/entity |
Сущности для JPA. Некоторые разделены тематически по папкам, если сущностей > 1 |
/entity/access/repository |
Репозитории для доступа к сущностям из БД. DAO. |
util |
Utility-классы для всего приложения. Например, работа с переменными окружения |
Внутреннее содержание папки api
Директория | Назначение |
---|---|
. |
В самой директории находятся ендпоинты с приставкой в конце Api |
/exception |
Кастомные исключения, созданные для отлавливания в ExceptionHandler |
/filter |
Фильтры приложения. Там же находиться ExceptionHandler |
/model |
Модели обмена данными, если отправка обычных сущностей недостаточна или избыточна |
/oauth |
Все, что связано с OAuth 2.0 авторизацией через другие сервисы. Важно заметить, что реализация OAuth самого приложения для других - расположена не здесь |
/util |
Utility-классы для ендпоинтов и вспомогательных им классах |
Теперь, когда у вас есть общее представление о приложении, углубимся в каждый его модуль