Сервис, реализующий получение потока ФИО, обогащение ответа наиболее вероятными возрастом, полом и национальностью и сохранение данных в БД. Сервис содержит многие упрощения и является лишь примером работы с требуемыми технологиями.
- Слушать очередь кафки FIO.
- Проверять корректность сообщения.
- Обогащать корректное сообщение возрастом, полом и национальностью.
- Сохранять обогащенное сообщение в БД postgres.
- Предоставлять REST API методы для управления данными.
- Endpoint:
/users
- Метод:
GET
- Параметры:
page
: Номер страницы (обязательный).size
: Размер страницы (обязательный).filter
: Фильтрационный запрос (необязательный).
- Ответ:
200 OK
: Возвращает массив объектов пользователей.400 Bad Request
: В случае некорректных параметров.500 Internal Server Error
: В случае ошибки сервера.
- Endpoint:
/users
- Метод:
POST
- Тело запроса:
{ "name": "Name", "surname": "Surname", "patronymic": "Patronymic (необязательно)" "age": "10 (необязательно)", "gender": "gender (необязательно)", "nationality": "nationality (необязательно)" }
- Ответ:
201 Created
: Возвращает объект созданного пользователя.400 Bad Request
: В случае ошибки в данных.500 Internal Server Error
: В случае ошибки сервера.
- Endpoint:
/users/:id
- Метод:
DELETE
- Параметры:
id
: Идентификатор пользователя.
- Ответ:
204 No Content
: Успешное удаление.400 Bad Request
: В случае некорректного идентификатора.500 Internal Server Error
: В случае ошибки сервера.
- Endpoint:
/users/:id
- Метод:
PUT
- Параметры:
id
: Идентификатор пользователя.
- Тело запроса:
{ "name": "Name", "surname": "Surname", "patronymic": "Patronymic (необязательно)" "age": "10 (необязательно)", "gender": "gender (необязательно)", "nationality": "nationality (необязательно)" }
- Ответ:
200 OK
: Возвращает объект обновленного пользователя.400 Bad Request
: В случае ошибки в данных.500 Internal Server Error
: В случае ошибки сервера.
type User struct {
ID int `json:"id"`
Name string `json:"name"`
Surname string `json:"surname"`
Patronymic string `json:"patronymic,omitempty"`
Age int `json:"age,omitempty"`
Gender string `json:"gender,omitempty"`
Nationality string `json:"nationality,omitempty"`
}