2012-11-05 61 views
2

我目前正在實施「令牌」REST服務。驗證資源的REST實踐

令牌只是一個字符串,由一些參數構建而成,然後在一定時間後進行哈希和過期。

我想在我的REST服務的端點,可以驗證令牌,但我不是100%確定如何實現它在一個RESTful方式

  1. 我想這應該通過GET來實現因爲它不會改變狀態,只要我正確設置緩存控件,它可以被緩存一段合理的時間。即mysite.com/token/kjfhwekjfwekj
  2. 什麼是合適的返回碼?如果它是有效的,我會假設200,但如果它是無效的呢?我覺得400是錯誤的,因爲雖然資源本身是無效的,但客戶端並沒有錯誤地調用端點。 404是否正確?如果我們認爲令牌是短暫的資源,我想是這樣嗎?

回答

6

GET是檢查令牌的正確HTTP動詞。

假設爲令牌「無效」的意思是:

  1. 它從來沒有存在過,或者
  2. 它的存在,但不存在了。

你想讓你的服務的客戶能夠知道區別

  • 如果,對於情況2
  • 如果沒有,返回404 Not Found返回404 Not Found的情況1,和410 Gone

如果令牌存在,200 OK是正確的。

+0

它可能也是無效的,因爲用戶只是嘗試創建一個令牌,即/ token/iamguessingatokenname,但我認爲404仍然可以,因爲它在技術上仍然是一個從未存在的資源 – qui

+0

@ qui的確,但服務器如何區分從未存在過的令牌?我不認爲它可以。 – 2012-11-05 10:45:49

0

服務器具有對稱哈希鍵;它可用於驗證傳入的令牌是否由其他人生成。

1

如果你想成爲Restful,最好的辦法是使用HEAD方法,因爲你不需要一個標記,你只是想知道標記是否存在。

HEAD方法用於請求資源的元數據。 GET用於檢索資源