Как расширить REST API за пределы обычных операций CRUD - PullRequest
1 голос
/ 26 октября 2011

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

Controller_Api_Product

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

Controller_Api_Category

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

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

  • POST: Создать
  • GET: Читать
  • PUT: обновление
  • УДАЛИТЬ: Удалить

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

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

Controller_Api_Product_Category

URL: api.example/product_category/<product_category_id>

Должен ли я использовать другой метод HTTP (например, LINK)?

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 Ответ

1 голос
/ 26 октября 2011

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

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

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

...