2017-07-04 48 views
2

我正在使用NodeJs和表達中間件來編寫一個休息服務。我有以下問題 -Rest Api最佳實踐 - 以查詢參數的形式傳遞日期

  1. 我得把用戶ID,並在每個服務標識進行驗證,而不管方法類型,即GETPOSTPUTDELETE的。把這兩個參數作爲請求頭或查詢參數的最好方法是什麼?我不想把它作爲身體參數,因爲獲得請求不會有身體。

  2. 我想寫一個方法類型爲GET的服務用於數據檢索,這個調用的參數是字符串和日期。如何將這些參數傳遞給查詢參數,特別是日期參數應該作爲js日期還是其他格式傳遞?

    GET - https://localhost:someport/<objectid>/<createddate> 
    headers - x-user-id:someid 
          x-access-token:sometoken 
    

    如果這樣,那麼應該傳遞哪個格式的創建日期。

    還是應該使用下面的那個?

    GET - https://localhost:someport/ 
    headers - x-user-id:someid 
          x-access-token:sometoken 
          x-object-id:someid 
          x-created-date:somedate 
    
+0

將標記放在標題和用戶標識中作爲get或post參數。 –

+0

標頭中的標記是有道理的,但是您的用戶標識是指get或post參數?該服務必須得到,所以郵政是沒有問題的。現在得到只有標題和查詢參數你建議哪一個? – Jeet

+0

我建議保持用戶ID作爲查詢參數。和一個關於完全不相關的主題的筆記,如果你想支持後也然後相同的請求與查詢參數,並沒有正文將工作 –

回答

1

請求標頭是發送這些敏感信息的最佳位置。標頭在http請求的所有方法中很常見。因此,您不必擔心像GETPOSTPUT這樣的方法。如果你使用查詢參數,那麼我們會在Url中更醜陋。
此外,我不知道使用UserIDtoken。因爲在寧靜的服務器中我們也使用令牌來標識用戶。因此,通常我們不會發送用戶標識。

+0

我很欣賞你的答案,並且完全聽起來不合用userid和token。我正在使用jwt作爲您的信息,並且已經在令牌中傳遞了用戶標識。我可以擺脫用戶ID。所以多數民衆贊成少,謝謝你:) – Jeet

1

休息了一會API設計的最佳實踐說,公開哪些不敏感的用戶信息獲取請求作爲查詢參數的參數。所以用戶ID和令牌像事情應該在標題和其他事情可以去獲取請求參數。

選擇頭中只有用戶標識和令牌的第一個。

+0

我同意,但問題是複雜的數據類型像日期應該作爲查詢參數傳遞? – Jeet

+0

是的日期可以在查詢參數中傳遞。只要確保你的日期格式沒有任何與保留的URL字符衝突的字符 –