Тестирование
Протестировать api можно проверить зайдя на вашсайт/test. Ответы на запросы выводятся в консоль
Обращение
Обращение к GET-запросу вашсайт/api/services/{service_id}/tarifs
- response: ok
- Возврщает json, содержащий данные о тарифах service_id
-
respone: error. Причины:
- Тарифы по указанному service_id отсутствуют
- Указанный service_id отсутствует
Обращение к PUT-запросу вашсайт/api/users/{user_id}/services/{service_id}/tarif
- response: ok
- respone: error. Причины:
- Попытка изменить несуществующий user_id или service_id
- Попытка задать tarif_id, который отсутствует у указанного service_id
- service_id и user_id не находятся в одной строке
Тестовое задание
Дано
-
Структура таблиц mysql
services
- сервисы пользователейtarifs
- тарифы сервисовТарифы связываются между собой через параметр
tarif_group_id
-
Файл с конфигом для доступа к БД - db_cfg.php
Задача: Написать код, реализующий API-запросы
GET /services/{service_id}/tarifs
- получает тарифы для конкретного сервиса. Тарифы могут быть только с тем же самым tarif_group_id, что и у текущего тарифа сервиса.PUT /users/{user_id}/services/{service_id}/tarif
Данные:{"tarif_id": (ID тарифа из запроса на получениe тарифов)}
Общие требования к API
-
Ответы на запросы в виде JSON
-
JSON ответа по тарифам должен соответствовать примеру:
{ "result":"ok", "tarifs":[ { "title":"Земля", "link":"http://www.mak72.ru/tarifi_internet/in/1.htm", "speed":50, "tarifs":[ {"ID":2,"title":"Земля (3 месяца)","price":1350,"pay_period":"3","new_payday":"1452891600+0300","speed":50}, {"ID":1,"title":"Земля","price":480,"pay_period":"1","new_payday":"1450213200+0300","speed":50}, {"ID":3,"title":"Земля (6 месяцев)","price":2460,"pay_period":"6","new_payday":"1460754000+0300","speed":50}, {"ID":4,"title":"Земля (12 месяцев)","price":4200,"pay_period":"12","new_payday":"1476565200+0300","speed":50} ] }, ... ] }
new_payday - timestamp даты следующего списания и таймзона. Рассчитывается как текущая дата полночь + pay_period
-
Запрос на выставление тарифа должен возвращать
{"result": "ok"}
при успехе или{"result": "error"}
в случае ошибки -
Запрос на выставление тарифа проставляет tarif_id и payday
-
user_id и service_id будут задаваться вручную при проверке задания
Общие требования к результату
- Код должен работать в любом каталоге web-сервера (не обязательно в корневом)
- Код не должен использовать специфических для web-сервера функций и настроек
- Код должен использовать конфигурационный файл db_cfg.php только для настрок БД
- Прикладывать db_cfg.php к решению не нужно
- Точка входа в API должна быть в файле index.php
- Учесть при написании, что управление на index.php будет передаваться через обработку 404й ошибки