За последние 24 часа нас посетили 22900 программистов и 1240 роботов. Сейчас ищут 783 программиста ...

Проектирование REST API

Тема в разделе "PHP для новичков", создана пользователем rugleb, 11 дек 2017.

  1. rugleb

    rugleb Новичок

    С нами с:
    27 ноя 2016
    Сообщения:
    25
    Симпатии:
    0
    Задача такая, организовать REST-полное API.
    Опишу пример с GET запросомами:
    /api/users - вернуть всех пользователей
    /api/users/20 - вернуть юзера с id = 20
    /api/users/20/messages - вернуть все отправленные сообщения пользователя с id 20.
    Очевидно, что users - сущность (запись в таблице User), id - его id, message - сущность-отношение.
    Метод GET только возвращает данные.
    Аналогично с другими HTTP-запросами:
    POST - создание
    PUT - изменение
    DELETE - удаление

    Есть ещё пару особенных запросов:
    /api/login
    /api/logout
    /api/reg (регистрация)
    Может ещё добавятся.

    Сейчас имеется Router, который парсит url по следующему правилу:
    /{controller}/{action}/{alias} - стандартный MVC.

    Как грамотно организовать API в рамках MVC, что является контроллером, что действием? Проблема именно с учётом особенных запросов (login..).
    Может у кого-то был подобный опыт, мне было бы полезно услышать выше мнение.
     
    #1 rugleb, 11 дек 2017
    Последнее редактирование: 11 дек 2017
  2. mkramer

    mkramer Суперстар
    Команда форума Модератор

    С нами с:
    20 июн 2012
    Сообщения:
    8.555
    Симпатии:
    1.754
    Перепиши свой или возьми готовый роутер, который позволяет разным типам запросов задавать разные обработчики. Вот так это к примеру в Laravel выглядит:
    PHP:
    1. Route::get("/api/users/{id}", "User@getUserData");
    2. Route::post("/api/users/{id}", "User@updateUserData");