2015-09-24 85 views
1

我已經嘗試了RESTful API概念,發現它對構建資源API有很好的理念。例如,添加commentpost設計以RESTful方式工作的複雜API的指南?

POST /posts/{id}/comments 

然而,也有一些情況,糾正我,如果我錯了,預期的API不能真正的模型作爲一個簡單的CRUD

例如,加入product到系統需要加入picture,加入多個tags指定它的category

我該如何做到這一點寧靜的方式?

1.)我是否強制API用戶在多個API調用之後關注?

POST /pictures -- add picture 
GET /categories -- get selected category 
POST /tags  -- add tags 
POST /products -- input picture, category, tags ids as JSON fields 

2.)我是否使用嵌套對象自動查找所有子資源?

POST /products -- input nested JSON array with picture/category/tags object field 

在這種情況下,所有的子資源將現有資源,而不是一些(picturetags)其他應當公佈。 另外,如果在內部添加picture成功但添加tags失敗會發生什麼情況?

3.)我只是做一個臨時API嗎?這與REST如何配合?這不會打破RESTful的想法嗎?

POST /add_products 

是否有任何指導來處理RESTful API的複雜API?

謝謝。

回答

0

在我看來,人們對REST最大的誤解之一是內部模型(db中的表或mongo中的文檔)和REST資源必須相同。 REST資源可以是一個真正的模型,也可以是一個抽象實體,也可能不存在於db中。

所以在這種情況下,就REST而言,您的url與POSTPOST /products請求是完全正確的。而且從我個人的經驗建議 - 一個人並不需要太教條有關URL只要REST的基本原則是保守的,例如

  1. 使用權HTTP動詞
  2. 使用權狀態碼
  3. 可緩存建築
  4. 通過URL
  5. 超媒體資源的
  6. 獨一無二的標識(如果你能走那麼遠)