Создание API

Всё что касается построения API
Ответить
Mukcep
Сообщения: 1
Зарегистрирован: 2017.04.28, 16:56

Создание API

Сообщение Mukcep » 2017.04.28, 16:58

Всем доброго времени!
Стоит задача написать относительно простое API для мобильного приложения (что-то типа каталога). До этого всё кое-как работало на самописном движке, но вскоре стало понятно, что расширять его будет весьма проблематично и затратно (по причине костылей и квадратных колёс, ну, это не суть важно)

Так вот, было принято решение написать API на фреймворке (чтобы потом в будущем можно было без проблем сделать web-версию). Выбор пал на Yii2.

Опыт работы с фреймворком у меня весьма посредственный - пара тестовых проектов и понимание основных принципов того, как там всё работает и устроено, но не более.

Исходя из документации я понял, что в Yii есть поддержка RESTful Api и его реализация не так сложна... Но вот вся проблема в том, что АПИ нужно реализовать так, чтобы было минимум отличий от предыдущей недоверсии. Вплоть до "одинаковости" запросов и ответов. Всё это для того, чтобы затрагивать код клиентской части как можно меньше... А если реализовывать на RESTful, то менять придётся всё.

В итоге получается, что нужно реализовать свой API-движок, если это так можно назвать и работать уже с ним.

И... Я просто не знаю как это сделать на Yii. Сделать-то конечно смогу, но не зная тонкостей работы с фреймворком начну изобретать кучу велосипедов, делать то, что во фреймворке уже теоретически есть.

Вид JSON ответа примерно такой:

Код: Выделить всё

{
  "response":{
    // Тут результат работы
  },
  "status":{
    "code":0,
    "message":"Success"
  }
}
Т.е в моём текущем понимании это всё должно работать примерно так:
Клиент делает запрос на server.com/api/user/list (server.com/?r=api/user/list).
Далее в методе actionList ведётся работа с моделью, которая возвращает данные и БД, далее всё это подставляется в "шаблон" ответа, в объект response. Т.е. в идеале после этого запроса ответ должен быть таким:

Код: Выделить всё

{
  "response":{
    "list":[
      {
        "id":1,
        "name":"Петя"
      },
      {
        "id":2,
        "name":"Вася"
      }
    ]
  },
  "status":{
    "code":0,
    "message":"success"
  }
}
Вроде всё просто и понятно, но вот тут у меня возник вопрос: Как реализовать работу с шаблоном, где и что нужно создавать? Я так понял для всего этого нужно написать класс, который будет всем этим заниматься... Создать-то не проблема, но хочется использовать функционал фреймворка по полной ;)

Извиняюсь за свою тупизну и примитивные вопросы, но гугл даёт инфу только по REST апи...
Всем бобра!

Аватара пользователя
samdark
Администратор
Сообщения: 9251
Зарегистрирован: 2009.04.02, 13:46
Откуда: Воронеж
Контактная информация:

Re: Создание API

Сообщение samdark » 2017.05.03, 23:42


Ответить