2015-05-29 49 views
1

比方說,我有三個表REST URI命名約定

product (id, name) 
customer (id, name) 
product_customer (product_id, customer_id) 

我下面的REST服務(URI'S)已經到位爲productcustomer

GET /products => get all products 
GET /products/:id => get details on a specific product 
POST /products => add a product 
PUT /products/:id => update a product 
DELETE /products/:id => delete a product 

Same as above for /customers 

問題

現在連接表product_customer需要一個URI和REST約定來ret rieve記錄按以下需要

一)/product_customer(將通過customer_id參數去獲得由客戶購買的所有產品)

B)/product_customer(將通過product_id參數去讓誰買了這個產品的所有客戶)

我需要一個REST的uri約定來連接表能夠通過兩個參數檢索記錄,那裏是否有任何標準慣例?

編輯樣品JSON

{ 
    "products": [ 
    { 
     "id": 1, 
     "name": "product 1" 
    } 
    ], 
    "customers": [ 
    { 
     "id": 1, 
     "name": "john" 
    }, 
    { 
     "id": 2, 
     "name": "jane" 
    },   
    ] 
} 

編輯2 - 建議的URI的基礎上,評論

多元(以s)

GET /products - 列出所有產品

GET /products/1 - 詳細樣的產品ID 1名等(無客戶)

奇異

GET /product/1 - 產品的詳細信息,再加上它的客戶

GET /product/1/customers產品中,只有客戶1

+0

單數或複數形式取決於模型的名稱。如果型號名稱是* product *,則請求是'GET/product/1'等。 – Bulkin

回答

2

那麼,如果你在你的模型中創建了Many-to-many關聯模型,例如:

API /模型/ Product.js

module.exports = { 

    attributes: { 
     id: { 
      type: 'integer', 
      primaryKey: true, 
      autoIncrement: true, 
      unique: true 
     }, 
     name:'string', 

     // Add a reference to Customer model 
     customers: { 
      collection: 'customer', 
      via: 'products' 
     } 
    } 
} 

API /模型/客戶。JS

module.exports = { 

    attributes: { 
     id: { 
      type: 'integer', 
      primaryKey: true, 
      autoIncrement: true, 
      unique: true 
     }, 
     name:'string', 

     // Add a reference to Product model 
     products: { 
      collection: 'product', 
      via: 'customers' 
     } 
    } 
} 

之後,你將能夠通過Blueprint API要求:

所有客戶產品 ID 1:

GET /product/1/customers 

所有產品客戶 ID 5:

GET /customer/5/products 

請注意,該型號的名稱是產品和客戶是單數 - 沒有',他們的協會是產品和客戶!這就是我喜歡的,你可以像你想要的名字。

+0

不錯,我沒有使用Sails.js,但想在我的自定義應用程序中使用它的約定,所以'GET/product/1/customers'意味着獲得關於產品ID 1的「細節」以及所有客戶的列表?不僅僅是顧客,產品的細節也是如此。請確認 – user2727195

+0

你可以請我的JSON輸出幫助,我的格式是'{「產品」:[{「id」:1,「name」:「prod1」}],「customers」:[{「id」 :1,「name」:「john」},{「id」:2,「name」:「Doe」}]]產品和客戶處於同一水平,還是我需要將客戶嵌入產品中?編輯我的問題的知名度 – user2727195

+0

它會將所有相關客戶返回給所有相關客戶。如果你想在一個請求中獲得產品和客戶,那麼只需'GET/product/1' – Bulkin