如何将 REST API 扩展到普通 CRUD 操作之外
我正在为 Kohana 网站开发 ORM 对象的 REST 接口。到目前为止,我有两个控制器:
Controller_Api_Product
URL:api.example.com/product/
Controller_Api_Category
URL : api.example.com/category/
其中每个都接受以下方法并成功更新记录。
- POST: 创建
- GET: 读取
- PUT: 更新
- DELETE: 删除
我想创建一种处理 ORM 的 has_many 属性的方法。例如,我希望能够将产品和类别链接在一起。我将这种关系存储在一个单独的表(products_categories)中。我没有该表的 ORM 模型(因为我不存储任何额外的关系数据)。
管理它的最佳方法是什么?我应该为表及其自己的控制器创建一个 ORM 模型吗?
Controller_Api_Product_Category
URL:api.example/product_category/
我应该使用不同的 HTTP 方法(例如 LINK)吗?
Controller_Api_Product_Category 使用方法 LINK 调用
URL:api.example/product/
我应该有一些其他完全不同的控制器吗?绑定到特定模型?
Controller_Api_Link
URL:api.example.com/link/product/
拥有单独的链接控制器显然可以用于任何对象。我只是有点困惑如何将我的 REST API 扩展到正常的 CRUD 操作之外。
I am working on a REST interface for ORM objects for a Kohana website. I've got two controllers so far:
Controller_Api_Product
URL: api.example.com/product/<product_id>
Controller_Api_Category
URL: api.example.com/category/<category_id>
Each of these accepts the following methods and updates the record succesfully.
- POST: Create
- GET: Read
- PUT: Update
- DELETE: Delete
I'd like to create a some way of handling ORM's has_many properties. For example I'd like to be able link a product and a category together. I have this relationship stored in a separate table (products_categories). I don't have an ORM model for that table (as I don't store any extra relationship data).
What would be the best way to manage it? Should I create an ORM model for the table and it's own controller?
Controller_Api_Product_Category
URL: api.example/product_category/<product_category_id>
Should I use a different HTTP method (eg. LINK)?
Controller_Api_Product_Category called with method LINK
URL: api.example/product/<product_id>
Should I have some other completely different controller which isn't bound to a specific model?
Controller_Api_Link
URL: api.example.com/link/product/<product_id>/category/<category_id>
Having a separate link controller can obviously be used for any objects. I'm just a bit stumped on how to extend my REST API beyond the normal CRUD actions.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
我想说,如果您已经在表中存储了一个链接,您应该像使用其他对象一样使用它吗?
并对链接本身执行 CRUD 操作。
I'd say if you already have a link stored in table, you should use it like any other object?
and perform CRUD operations on the link itself.