Skip to content

AnnaBerk/user-service

Repository files navigation

FIO Service

Описание

Сервис, реализующий получение потока ФИО, обогащение ответа наиболее вероятными возрастом, полом и национальностью и сохранение данных в БД. Сервис содержит многие упрощения и является лишь примером работы с требуемыми технологиями.

Основные функции:

  1. Слушать очередь кафки FIO.
  2. Проверять корректность сообщения.
  3. Обогащать корректное сообщение возрастом, полом и национальностью.
  4. Сохранять обогащенное сообщение в БД postgres.
  5. Предоставлять REST API методы для управления данными.

API

1. Получение списка пользователей

  • Endpoint: /users
  • Метод: GET
  • Параметры:
    • page: Номер страницы (обязательный).
    • size: Размер страницы (обязательный).
    • filter: Фильтрационный запрос (необязательный).
  • Ответ:
    • 200 OK: Возвращает массив объектов пользователей.
    • 400 Bad Request: В случае некорректных параметров.
    • 500 Internal Server Error: В случае ошибки сервера.

2. Добавление нового пользователя

  • Endpoint: /users
  • Метод: POST
  • Тело запроса:
    {
        "name": "Name",
        "surname": "Surname",
        "patronymic": "Patronymic (необязательно)"
        "age": "10 (необязательно)",
        "gender": "gender (необязательно)",
        "nationality": "nationality (необязательно)"
    }
  • Ответ:
    • 201 Created: Возвращает объект созданного пользователя.
    • 400 Bad Request: В случае ошибки в данных.
    • 500 Internal Server Error: В случае ошибки сервера.

3. Удаление пользователя

  • Endpoint: /users/:id
  • Метод: DELETE
  • Параметры:
    • id: Идентификатор пользователя.
  • Ответ:
    • 204 No Content: Успешное удаление.
    • 400 Bad Request: В случае некорректного идентификатора.
    • 500 Internal Server Error: В случае ошибки сервера.

4. Изменение данных пользователя

  • 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: В случае ошибки сервера.

Модели

User

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"`
}

Releases

No releases published

Packages

No packages published

Languages