2017-06-01 27 views
-2

TutorialsPoint定義了以下方法REST風格的設計背景:URI包含HTTP動作動詞。我可以考慮這個API RESTful嗎?

URI   HTTP  Body   Result 
----------------------------------------------------------------- 
listUsers  GET  empty   Show list of all the users 
addUser  POST  JSON string Add details of new user 
deleteUser DELETE JSON string Delete an existing user 
:id   GET  empty   Show details of a user 

我覺得這是一種誤導,因爲它不是REST風格。

一個RESTful設計是如下:

URI   HTTP  Body   Result 
---------------------------------------------------------------- 
users  GET  empty   Show list of all the users 
users  POST  JSON string Add details of new user 
users  DELETE empty   Delete an existing user 
users/:id GET  empty   Show details of a user 

是我的RESTful正確的理解?無論REST風格的定義


,在我看來,TutorialsPoint提出錯誤的設計,因爲deleteUser內部URL複製一個已經爲DELETE HTTP行動,這違反了Once And Only Once普遍原則傳遞的信息。

回答

2

第一組端點是一個不好的設計爲一個REST API。這完全是關於RPC(並且DELETE請求不應該有有效載荷)。

第二組端點是以資源爲導向這就是你想要的REST API。 URI標識資源,HTTP方法表示對資源的操作。


但是REST架構變爲大有超越的URI的設計。

REST架構風格是協議無關,但它的設計在大部分時間HTTP協議。

RESTful應用程序中的基本概念是資源。資源可以有不同的表示。欲瞭解更多詳情,這answer可以是有幫助的。

要被認爲是REST風格,應用程序必須遵循一套在羅伊·托馬斯Fielding的論文的chapter 5定義的約束:

+0

你是什麼意思 「本身的網址是不是REST風格」?我認爲圍繞資源進行RESTful設計意味着URL將包含資源地址而不是操作地址。至少他們不應該重複已經作爲HTTP請求類型傳遞的內容。 – alpav

+0

@alpav _RESTful_概念並不依賴於URL的設計方式。在通過HTTP協議設計REST時,URL必須是面向資源的,但也有一些必須遵守的約束條件。 –

+0

是的,面向資源的URL並不是RESTful設計要求的唯一含義,但這是否意味着什麼?可以在任何RESTful設計中的URL內部採取行動?我認爲它不能。 – alpav

2

是你的理解是正確的。該教程是誤導性的。

相關問題