Skip to content

Filipponik/scid-test

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

7 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Тестовое задание scid.ru

Стек технологий

PHP 7, MySQL

По требованию реализовано на PHP без фреймворков. ООП не использовалось из-за недостатка времени.

Также был использован RedBeanPHP ORM.

API

Все запросы по http://domain.com/api

API

База данных

ER-модель БД представлена ниже.

DB

Скрипт бд представлен тут

Установка

  1. Клонировать репозиторий
  git clone git@github.com:Filipponik/scid-test.git
  1. Создать базу данных

  2. Применить скрипт на созданной базе

  3. Настроить подключение к базе данных в конфиге

$db_host = 'HOST';
$db_name = 'DBNAME';
$db_conn_string = 'mysql:host='.$db_host.';dbname='.$db_name;
$db_user = 'USER';
$db_pass = 'PASSWORD';
  1. Перезапустить сервер, например
  systemctl restart httpd

Задание

Создать JSON REST API для справочника журналов, с возможностью добавления, обновления, чтение и удаления (CRUD).

Сущность «Журнал» состоит из полей: • Название. (Обязательное поле)

• Короткое описание. (Необязательное поле)

• Картинка. (jpg или png, не больше 2 Мб, должна сохраняться в отдельную папку и иметь уникальное имя файла)

• Авторы (Обязательное поле, может быть несколько авторов у одного журнала, должна быть возможность выбирать из списка авторов, который создается отдельно).

• Дата выпуска журнала.

Сущность «Автор» состоит из полей:

• Фамилия (Обязательное поле, не короче 3 символов)

• Имя (Обязательное, не пустое)

• Отчество (Необязательное)

Для запросов на получение данных клиент должен использовать GET-запросы. Для отправки данных на сохранение клиент должен использовать POST-запросы.

API должен иметь в себе методы:

POST /author/add

POST /author/update

POST /author/delete

GET /author/list - здесь опционально клиент может передать параметры «page» - номер страницы и «perPage» - количество записей на страницу.

POST /magazine/add

POST /magazine/update

POST /magazine/delete

GET /magazine/list - по параметрам page,perPage по аналогии с описанным list выше.

В теле POST-запроса клиент должен передавать данные в виде JSON-строки, в ответ по всем методам также получат в теле ответа JSON-строку.