Как расширить REST API за пределы обычных операций CRUD

#php #api #rest #kohana

#php #API #rest #кохана

Вопрос:

Я работаю над интерфейсом REST для объектов ORM для веб-сайта Kohana. Пока у меня есть два контроллера:

Controller_Api_Product

URL: api.example.com/product/<product_id>

Controller_Api_Category

URL: api.example.com/category/<category_id>

Каждый из них принимает следующие методы и успешно обновляет запись.

  • СООБЩЕНИЕ: Создать
  • ПОЛУЧИТЬ: Прочитать
  • ПОСТАВИТЬ: Обновить
  • УДАЛИТЬ: Удалить

Я хотел бы создать какой-то способ обработки свойств ORM has_many. Например, я хотел бы иметь возможность связать продукт и категорию вместе. У меня это отношение хранится в отдельной таблице (products_categories). У меня нет модели ORM для этой таблицы (поскольку я не храню никаких дополнительных данных о взаимоотношениях).

Каков наилучший способ управления этим? Должен ли я создать модель ORM для таблицы и ее собственный контроллер?

Controller_Api_Product_Category

URL: api.example/product_category/<product_category_id>

Должен ли я использовать другой метод HTTP (например. ССЫЛКА)?

Controller_Api_Product_Category вызывается с помощью метода LINK

URL: api.example/product/<product_id>

Должен ли у меня быть какой-то другой совершенно другой контроллер, который не привязан к конкретной модели?

Controller_Api_Link

URL: api.example.com/link/product/<product_id>/category/<category_id>

Очевидно, что наличие отдельного контроллера ссылок может использоваться для любых объектов. Я просто немного озадачен тем, как расширить мой REST API за пределы обычных действий CRUD.

Ответ №1:

Я бы сказал, если у вас уже есть ссылка, хранящаяся в таблице, вы должны использовать ее как любой другой объект?

  URL: api.example.com/links/<link_id>
 

и выполнять операции CRUD над самой ссылкой.

Комментарии:

1. Это звучит правильно, контроллер для каждой таблицы базы данных (в отличие от модели ORM).