Rowan Parker
Rowan Parker

Reputation: 794

How to extend a REST API beyond normal CRUD operations

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.

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.

Upvotes: 1

Views: 1129

Answers (1)

Snifff
Snifff

Reputation: 1894

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.

Upvotes: 1

Related Questions