如何将 REST API 扩展到普通 CRUD 操作之外

发布于 2024-12-11 19:46:29 字数 1211 浏览 0 评论 0原文

我正在为 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//category/

拥有单独的链接控制器显然可以用于任何对象。我只是有点困惑如何将我的 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

放低过去 2024-12-18 19:46:29

我想说,如果您已经在表中存储了一个链接,您应该像使用其他对象一样使用它吗?

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

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

I'd say if you already have a link stored in table, you should use it like any other object?

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

and perform CRUD operations on the link itself.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文