37 lines
2.6 KiB
Markdown
37 lines
2.6 KiB
Markdown
|
## Домашнее задание №13 «API к Календарю»
|
|||
|
Необходимо реализовать HTTP и GRPC API для сервиса календаря.
|
|||
|
|
|||
|
Методы API в принципе идентичны методам хранилища и [описаны в ТЗ](./CALENDAR.MD).
|
|||
|
|
|||
|
Для GRPC API необходимо:
|
|||
|
* создать отдельную директорию для Protobuf спецификаций;
|
|||
|
* создать Protobuf файлы с описанием всех методов API, объектов запросов и ответов (
|
|||
|
т.к. объект Event будет использоваться во многих ответах разумно выделить его в отдельный message);
|
|||
|
* создать отдельный пакет для кода GRPC сервера;
|
|||
|
* добавить в Makefile команду `generate`; `make generate` - вызывает `go generate`, которая в свою очередь
|
|||
|
генерирует код GRPC сервера на основе Protobuf спецификаций;
|
|||
|
* написать код, связывающий GRPC сервер с методами доменной области (бизнес логикой);
|
|||
|
* логировать каждый запрос по аналогии с HTTP API.
|
|||
|
|
|||
|
Для HTTP API необходимо:
|
|||
|
* расширить "hello-world" сервер из [ДЗ №12](./12_README.md) до полноценного API;
|
|||
|
* создать отдельный пакет для кода HTTP сервера;
|
|||
|
* реализовать хэндлеры, при необходимости выделив структуры запросов и ответов;
|
|||
|
* сохранить логирование запросов, реализованное в [ДЗ №12](./12_README.md).
|
|||
|
|
|||
|
Общие требования:
|
|||
|
* должны быть реализованы все методы;
|
|||
|
* календарь не должен зависеть от кода серверов;
|
|||
|
* сервера должны запускаться на портах, указанных в конфиге сервиса.
|
|||
|
|
|||
|
**Можно использовать https://grpc-ecosystem.github.io/grpc-gateway/.**
|
|||
|
|
|||
|
### Критерии оценки
|
|||
|
- Makefile заполнен и пайплайн зеленый - 1 балл
|
|||
|
- Реализовано GRPC API и `make generate` - 3 балла
|
|||
|
- Реализовано HTTP API - 2 балла
|
|||
|
- Написаны юнит-тесты на API - до 2 баллов
|
|||
|
- Понятность и чистота кода - до 2 баллов
|
|||
|
|
|||
|
#### Зачёт от 7 баллов
|