2013-08-18 47 views
6

我最近變得很成冥思苦想的REST風格越好,我發現自己被非顯而易見的途徑受阻。RESTful方式來檢查用戶名,電子郵件可用性等

在這種特殊情況下,我很好奇RESTful方法來檢查用戶的用戶名和電子郵件的可用性,或其他任何具有唯一性的方法。

我的直覺告訴我,我將要對其執行/users/email/users/username/每個GET有需要PARAM,或者說沿着GET /users/search/emailusername可選PARAMS線。如果您收到200,則usernameemail不可用;如果你得到一個404,那麼它是可用的。

我更喜歡第一個選項,因爲它更加明確,但這並不像我對Roy Fielding的論點了解得足夠清楚該怎麼做。

這裏最健全的方法是什麼?

回答

4

第一種方法似乎更「RESTful」。您嘗試獲取特定資源(通過用戶名或電子郵件),如果存在或獲取狀態消息「不可用資源」,則獲取它。這將是:

  • GET /用戶/用戶名/約翰·韋恩( 「獲取」 約翰·韋恩資源/用戶名可用性...)

這應該產生:

  • 200:如果資源是否存在
  • 404:如果資源不存在

第二O NE似乎更像是「SOAP」般的網絡服務,在這裏你定義一個「功能」(/用戶/搜索/),還有一些「參數」(用戶名,電子郵件)...

+0

我改變了他們,因爲如果資源存在,它是不可用的。如果它不存在,則可用。 –

+1

對不起(編輯我的回答)...我沒有「讀」這樣一來,你的意思是它返回「200」,如果用戶名可用......我明白了,但它是一個有點混亂,根據語義GET資源。也許你應該考慮處理在客戶端,即在客戶端,您檢查資源是不可用的,你可以克里特它(用戶名可用)......但是,這是我的解釋,我認爲有相當多的解釋空間:) – emgsilva

1

對於獨特的領域,第一個選項是非常適合(/ users/email或/ users/username /),對於非唯一字段進行搜索會更合適。

0

我會建議,您使用HEAD請求,而不是GET。

使用GET可能會造成安全問題。黑客可以利用相結合,以確定有效的用戶名作爲GET要麼導致200或404

0

你應該嘗試通過

GET /[email protected] 

讓您的郵件用戶列表,並在這裏你可以找到1項目或0項目。在第一種情況下,地址不是唯一的。在另一個 - 這是唯一

相關問題