如何将REST API扩展到正常的CRUD操作之外

时间:2011-10-26 06:15:02

标签: php api rest kohana

我正在为Kohana网站开发ORM对象的REST接口。到目前为止我有两个控制器:

Controller_Api_Product

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

Controller_Api_Category

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

其中每个都接受以下方法并成功更新记录。

  • POST:创建
  • GET:阅读
  • PUT:更新
  • 删除:删除

我想创建一种处理ORM的has_many属性的方法。例如,我希望能够将产品和类别链接在一起。我将这种关系存储在一个单独的表(products_categories)中。我没有该表的ORM模型(因为我没有存储任何额外的关系数据)。

管理它的最佳方法是什么?我应该为表创建一个ORM模型吗?它是自己的控制器吗?

Controller_Api_Product_Category

URL: api.example/product_category/<product_category_id>

我应该使用不同的HTTP方法(例如LINK)吗?

通过方法LINK调用Controller_Api_Product_Category

URL: api.example/product/<product_id>

我是否应该有一些其他完全不同的控制器,它不受特定型号的约束?

Controller_Api_Link

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

具有单独的链接控制器显然可以用于任何对象。我对如何将REST API扩展到正常的CRUD操作之外感到有点困惑。

1 个答案:

答案 0 :(得分:1)

我会说如果你已经有一个存储在表格中的链接,你应该像其他任何对象一样使用它吗?

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

并对链接本身执行CRUD操作。