2017-02-25 58 views
0

命名一個端點以創建最佳實踐的「草稿」版本的資源時?REST風格的API設計,命名起草端點

POST >>/posts

{ 
    title: 'My Post', 
    body: 'The content of my post', 
    status: 'DRAFT', 
} 

或者是更好的:

POST >>/posts/drafts

{ 
    title: 'My Post', 
    body: 'The content of my post', 
} 
+1

http://stackoverflow.com/questions/6845772/rest-uri-convention-singular-or-plural-name-of-resource-while-creating-it –

回答

0

從我上有效載荷看到,草案只是狀態資源。你可以使用PUT來更新它​​。

你能解釋一下爲什麼你想在URI路徑中進行DRAFT嗎?

+0

'PUT'是更換整個實體,' PATCH' - 用於部分更新。 –

0

與我說的大部分事情都有關係。使用REST時的一般假設是您已獲得資源集合。這就是爲什麼最常見的命名約定是在命名端點時使用複數形式。

當我看到終端名爲/posts時,我假設通過對它進行GET操作,我會收到帖子的集合。同樣,通過撥打/posts/{id}我應該收到一個特定ID的帖子。 資源集合也彼此嵌入 - 當我看到端點/posts/{id}/drafts時,我會假設我將爲具有給定ID的帖子獲取草稿。

現在的問題是這樣的 - 你想把你的數據作爲兩個單獨的集合(你必須以某種方式同步)或者你想堅持這個嵌入集合?如果第一個則可以有兩個端點/posts/drafts。如果第二個,那麼你應該去與根端點/posts,然後/posts/{id}/drafts

但是,如果帖子沒有草稿集合,那麼您可以簡單地使用一個/posts端點,並且不要指定任何其他內容,因爲這會混淆API的設計。就像你的第一個主張一樣。