За последние 24 часа нас посетили 17609 программистов и 1281 робот. Сейчас ищут 1439 программистов ...

Как лучше всего реализовать API в архитектуре MVC?

Тема в разделе "PHP для новичков", создана пользователем xCRABx, 13 дек 2015.

  1. xCRABx

    xCRABx Активный пользователь

    С нами с:
    17 мар 2011
    Сообщения:
    10
    Симпатии:
    0
    Здравствуйте.
    Сейчас у меня имеется проект, для которого пишется приложение, поэтому передо мной встал вопрос реализации API. Сам проект имеет MVC-архитектуру, на каждый запрос пользователя выбирается нужный контроллер из папки modules(ну а там уже вид и контроллер). Отмечу, что при создании модулей допускается неограниченная вложенность, то есть в папке module можно разместить папку api(в большинстве модулей здесь уже и находится контроллер), в ней папку user и т.д.
    Итак, моя идея реализации заключается в следующем:
    • Есть один глобальный модуль - api
      В этом модуле есть подмодули(папки): user, serach и т.д.
      Каждый подмодуль работает как обычный модуль в MVC архитектуре(только без представления)
      Как только в api приходит запрос, то в контроллере выбранного подмодуля api подключается модель одного из модулей системы, в которой выполняется необходимая функция, возвращающая некие данные
      Данные преобразуются в массив и возвращаются контроллеру, который отправляет их клиенту в JSON

    Пожалуйста, скажите, стоит ли так делать или есть более красивые способы реализации API?
     
  2. denis01

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

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    RESTful посмотри
     
  3. romach

    romach Старожил

    С нами с:
    26 окт 2013
    Сообщения:
    2.904
    Симпатии:
    719
    Дык, вопрос про каноничную архитектуру RESTful API или про архитектуру приложения? Как бы это разные вещи.
     
  4. Abyss

    Abyss Старожил

    С нами с:
    12 дек 2015
    Сообщения:
    1.298
    Симпатии:
    218
    Адрес:
    Default city
    Изи, пишешь абстрактный синглтон ядра, экстендишь от него всякие плюхи вида DB, Redis, Model, Controller, Route и понеслась! Я бы тебе прям скинул бы реализацию апи с шифровкой в бд, но вот не могу. Но ты можешь спросить меня как, прежде чем окунаться в какое-то другое серьёзное говно.
     
  5. igordata

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

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    Нафига мвц если это внешнее апи?
     
  6. Abyss

    Abyss Старожил

    С нами с:
    12 дек 2015
    Сообщения:
    1.298
    Симпатии:
    218
    Адрес:
    Default city
    Так а в чем проблема ?
    Под понятием MVC он имеет ввиду что-то типа /another/cool/url/format
    Где будут контроллеры и сабконтроллеры и вот эта шляпа - MVC, ещё забыл корованы из моделек
     
  7. romach

    romach Старожил

    С нами с:
    26 окт 2013
    Сообщения:
    2.904
    Симпатии:
    719
    Не понял, это типа все синглтонами будет?
     
  8. Abyss

    Abyss Старожил

    С нами с:
    12 дек 2015
    Сообщения:
    1.298
    Симпатии:
    218
    Адрес:
    Default city
    Де
     
  9. mkramer

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

    С нами с:
    20 июн 2012
    Сообщения:
    8.584
    Симпатии:
    1.762
    Ну почему. К примеру, API возвращает JSON, чем не вьюха? А с моделями и контроллерами всё и так понятно
     
  10. romach

    romach Старожил

    С нами с:
    26 окт 2013
    Сообщения:
    2.904
    Симпатии:
    719
    А если нужно два экземпляра DB? И синглтон-модель - это вообще как?
     
  11. Abyss

    Abyss Старожил

    С нами с:
    12 дек 2015
    Сообщения:
    1.298
    Симпатии:
    218
    Адрес:
    Default city
    Зачем два экземляра если на уровне обёртки PDO можно установить свитчер подключений ? Другой нужды не вижу.
    Модель не может быть синглтоном и у нас демократия, можешь сам решать что будет синглтоном, а что нет, просто модель экстендит кору для получения доступа к глобальным переменным, конфигам, алиасам и прочему, __construct не final.
     
  12. romach

    romach Старожил

    С нами с:
    26 окт 2013
    Сообщения:
    2.904
    Симпатии:
    719
    Дык это уже не синглтон, если он хранит в себе глобальные переменные, конфиги, алиасы и прочее - самый настоящий god object получается.
     
  13. Abyss

    Abyss Старожил

    С нами с:
    12 дек 2015
    Сообщения:
    1.298
    Симпатии:
    218
    Адрес:
    Default city
    Что-то типа того, но по сути этот год обжэкт позволяет как и запускать инстансы, так и просто экстендить себя, предлагая доступ ко всему
     
  14. runcore

    runcore Старожил

    С нами с:
    12 окт 2012
    Сообщения:
    3.625
    Симпатии:
    158
    а зачем его экстендить, если он годобджект? к нему доступ будет и так отовсюду.