RESTful API Application. Тестовое задание.

Когда я в первый раз серьезно занимался поиском работы — слал везде свое резюме. Некоторые рекрутеры отвечали, некоторые нет. Некоторые даже давали тестовое задание. Вот об одном из таких заданий я и расскажу.

Требовалось создать простое RESTful API system с возможностью обработки только GET и POST запросов. Кстати, здесь хорошо написано о том, что такое RESTful API. Суть задачи: создать API system для простого персонального менеджера задач.

Система должна была:

  1. Вывести список всех задач (GET метод)
  2. Вывести список всех тегов (GET метод)
  3. Получить один тег по ID и все его задачи (GET метод)
  4. Получить одну задачу по ID и все ее теги (GET метод)
  5. Возможность добавить новую задачу (POST метод)
  6. Возможность добавить новый тег (POST метод)

Обязательные поля для задачи:

  1. name
  2. description
  3. date of creation

Обязательные поля для тега

  1. name
  2. date of creation

Требования:

  • использование namespaces
  • PHP
  • MySQL
  • все возвращаемые результаты должны быть в формате JSON

Регистрации/авторизации быть не должно. Система должна быть ориентирована на одного (текущего) пользователя. Для реализации можно использовать любые доступные решения (вроде фреймворков) или написать собственное решение.

Вот такое вот было дано задание. На реализацию было отведено 5 дней.

Поскольку раньше я ничего похожего не делал, то выполнение этого задания началось с поиска информации, что это вообще такое API system. В результате серфа я узнал про REST и более подробно познакомился с понятием API. Кстати, очень понравилось API mail.ru.  На его примере многое стало понятно. После получения базовых теоретических знаний, последовал поиск путей решения поставленной задачи.

Первый и как мне показалось, самый простой вариант — самописный фреймворк. К счастью я отказался от этой идеи еще на этапе проектирования системы. Затем снова серф в инете в поиске уже готовых решений. В результате определился, что брать за основу буду микро-фреймворк. Какой? Снова серф. Вариантов было много, иногда даже WordPress и Laravel5 приходили в голову (хоть и не микро и не фреймворк). В итоге выбор пал на Silex.

Почему именно он? Наверное потому что он от создателей Symfony. Дальше надо было понять, как создавать нужные роуты и как вообще возвращать результат в JSON, с которым я также никогда не работал.

Русскоязычной информации было мало и не всегда в нужном объеме. На выручку (так чаще всего) пришел англоязычный сегмент интернета. Статья «Создаем простое REST приложение с Silex » помогла закрыть все пробелы. Этот парень настолько все хорошо описал, что я понял — выбор был правильным.

В итоге, написанное приложение получило неплохую оценку от технического директора и в сумме с техническим собеседованием мне удалось получить это место.

Также же были комментарии по моей работе. Перечислять их не стану, скажу только, что не забывайте заливать дамп базы 🙂 и везде старайтесь следовать стандарту PSR.