2017-07-11 43 views
1

我正在創建一個新服務,我需要在兩個實體上支持標記。 我可以創建/tags爲僅支持以下呼叫頂級REST資源:只讀派生REST資源?

GET /tags 

GET /tags/{tagName} 

要將代碼,我們使用以下電話:

PATCH /entity1/{entity_1_Name} 

PATCH /entity2/{entity_2_Name} 

所以每當一個標籤被應用到一個實體,隨後調用GET /tags將顯示該標籤。我打算這樣做,因爲這不需要我將標記獨立存儲在我的數據存儲中。

這是個好主意嗎?

回答

1

我可以創建/標籤爲頂級REST資源

是的,可以。如果tag是一個獨立實體,並且api響應僅包含tag_name和其他標記相關信息,則這聽起來有意義。不管你的api是否有數據庫或web.config,或者它處理硬編碼的值列表。您的API接口隱藏無論如何,用戶永遠不會知道實施的細節。擁有隻讀實體是可以的。

每當標籤應用到實體,後續調用GET /標籤將顯示標籤

我期望爲GET /entity2/{entity_2_Name}您的資源模型將有一個tags場:

class Entity2 
{ 
    string entity_name; 
    ... 
    string[] tags 
} 

作爲替代,您可以通過兩個電話獲取所有數據:

GET /entity2/{entity_2_Name} //在響應無標籤陣列

GET /entity2/{entity_2_Name}/tags

資源/entity2/{entity_2_Name}/tags應返回被分配到這個具體entity2實例標記

+0

這是個好主意,有在頂級/標記,返回系統中創建的所有標籤。響應將是一個Tag對象列表,其中包含它們的名稱以及用於該標記的所有可能的標記值。 – aman

+0

@aman是的,它適合休息。如果將來標籤數量將增長,並且普通列表將變得不便於使用,則可以使用搜索擴展此調用:GET/tags?query = sometag – Artem