Best Flask open-source libraries and packages

Writers app

A test task for a vacancy
Updated 2 months ago

writers-app

Задание

Реализовать сервис, который хранит в PostgreSQL данные о писателях и их книгах, и способен по HTTP-запросу GET /writers/<writer_id> возвращать информацию о писателе и его книгах в формате JSON.

Требования

  1. Сервис должен иметь поддержку запуска из консоли с параметром командной строки init, который создает в базе данных нужные таблицы, и заполняет их тестовыми данными (пара-тройка писателей и их книг).
  2. Метод получения данных о писателе по HTTP-запросу не должен обращаться к базе данных более одного раза.
  3. Наличие которого README.md с инструкцией по инициализации базы данных и по запуску сервиса.

Модели данных

Писатели (writers)

id идентификатор
name имя

Книги (books)

id идентификатор
author_id идентификатор автора
title название

Реализация

Разработанный сервис реализован на основе трехзвенной архитектуры и включает в себя следующие составляющие:

  1. Клиент (writers.py)
  2. Сервер (app.py)
  3. База данных (writers)

Развертывание

Для развертывания базы данных и сервера воспользуйтесь следующей инструкцией:

  1. Создайте базу данных writers. В терминале Linux вы можете сделать это посредством применения следующих команд:
    • sudo -i -u <username>, где username - имя пользователя (по умолчанию postgres).
    • createdb writers
  2. В папке с сервером создайте файл переменных окружения .env (touch .env). В созданном файле создайте переменную DATABASE_URL, имеющую в качестве своего значения ссылку на базу данных. (По умолчанию для локальной сети DATABASE_URL=postgresql://postgres:postgres@localhost/writers)
  3. Установите необходимые зависимости (pip install -r requirements.txt) для сервера.
  4. Запустите серверное приложение (python3 app.py).

Использование

Для использование сервиса выполните следующие шаги:

  1. Перед первым запуском клиентского приложения в папке с приложением создайте файл переменных окружения .env (touch .env). В созданном файле создайте переменную HOST_URL, имеющую в качестве своего значения ссылку на сервер. (По умолчанию для локальной сети HOST_URL=http://localhost:5000)
  2. Запустите клиентское приложение (python3 writers.py) с одним из следующих параметров командной строки:
    • -i (--init) - для создания необходимых таблиц в базе данных.
    • -s (--show) - для получения данных об идентификаторах писателей.
    • -w (--writer) <writer_id> - для получения данных о выбранном писателе по его идентификатору.

Пример использования программы

  1. Создание таблиц (python3 writers.py -i):

Tables 'writers' and 'books' has been initialized.

  1. Получение данных об идентификаторах писателей (python3 writers.py -s):
[
    {
        "id": 1,
        "name": "Достоевский, Ф.М."
    },
    {
        "id": 2,
        "name": "Булгаков, М.А."
    },
    {
        "id": 3,
        "name": "Куприн, А.И."
    }
]
  1. Получение данных о трудах Достоевского (python3 writers.py -w 1):
{
    "id": 1,
    "name": "Достоевский, Ф.М.",
    "books": [
        {
            "id": 2,
            "title": "Преступление и наказание"
        },
        {
            "id": 3,
            "title": "Игрок"
        },
        {
            "id": 7,
            "title": "Братья Карамазовы"
        },
        {
            "id": 8,
            "title": "Идиот"
        }
    ]
}
Tags testing