Тестовая задача "API по работе со списком пользователей"

Задача

  1. Разработать API для
    1. получения списка пользователей
    2. добавления нового пользователя
  2. Написать документацию к разработанному API
  3. Предусмотреть изменение хранилища данных учетных записей пользователей без внесения изменений в исходный код API

Реализация

Реализовано простейшее REST API на основе фреймворка Laravel

DEMO

Развёртывание dev окружения

Требования

Установка

git clone git@github.com:alex-karo/test-userlist-api.git
cd test-userlist-api
vagrant up

После развёртывания приложения можно зайти по адресу

Описание API

Для получения корректного JSON необходим HTTP заголовок "Accept: application/json"

Методы

Вывести всех пользователей

Request Method: GET
Request URL: /users/

Возвращает множество пользователей в формате JSON

Вывести пользователя с заданным id

Request Method: GET
Request URL: /users/{id}/

Возвращает одного пользователя в формате JSON
В случае отсутствия пользователя с заданным id - выдаёт ошибку 404.

Добавить пользователя

Request Method: POST
Request URL: /users/
Params:
name - имя пользователя

Возвращает созданного пользователя.
В случае ошибок валидации - выдаст ошибку 400 и JSON со списком ошибок

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

Request Method: DELETE
Request URL: /users/{id}/

Возвращает 204 в случае успеха.
Если пользователь не найден - выдаёт ошибку 404.

Изменить пользователя

Request Method: PUT | PATCH
Request URL: /users/{id}/
Params:
name - имя пользователя

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

Запрос:

GET /users/

Ответ:

[
  {
    "id":18,
    "name":"Johann",
    "created_at":"2016-10-22 10:38:05",
    "updated_at":"2016-10-22 10:38:05"
  },
  {
    "id":20,
    "name":"Robert');DROP TABLE users;",
    "created_at":"2016-10-22 11:15:29",
    "updated_at":"2016-10-22 11:15:29"
  }
]

Запрос:

GET /users/18/

Ответ:

{
    "id":18,
    "name":"Johann",
    "created_at":"2016-10-22 10:38:05",
    "updated_at":"2016-10-22 10:38:05"
}