2011-10-26 54 views
1

我正在爲Kohana網站的ORM對象的REST接口工作。我有兩個控制器至今:如何擴展一個REST API超出正常的CRUD操作

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)?

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操作。

+0

聽起來不錯,每個數據庫表的控制器(與ORM模型相反)。 –