總是使用TLS(就是https)來訪問API,沒有必要指出什么時候需要用,什么時候不需要用,只管任何時候都用它就好。
對所有非TLS的請求返回403 Forbidden,不要用重定向,這會允許一些不良的客戶端行為,而又沒有任何好處。依賴重定向的客戶端會使流量翻倍,而讓TLS毫無意義 —— 敏感數(shù)據(jù)已經(jīng)在第一次請求時發(fā)送出來了。
從一開始就為API分配版本。使用Accepts頭來發(fā)送版本信息,可以使用自定義的內(nèi)容類型,如:
Accept: application/vnd.heroku+json; version=3
不要提供默認(rèn)版本,而由客戶端顯式指定它使用哪一個特定的版本。
在所有的請求中帶上 ETag 頭 , 用于識別特定版本的返回資源。用戶可以在隨后的請求中通過提供If-None-Match頭的值來檢查內(nèi)容是否過期。
在每個API相應(yīng)中提供Request-Id頭,帶上一個唯一的UUID值。如果服務(wù)器和客戶端都記錄了這些值,在跟蹤和調(diào)試請求時會派上大用場。
對所有可能產(chǎn)生大量數(shù)據(jù)的響應(yīng)進(jìn)行分頁。使用Content-Range 頭來標(biāo)記分頁請求??梢詤⒖歼@個例子,來了解請求和響應(yīng)頭、狀態(tài)碼、Limit、排序和翻頁:Heroku Platform API on Ranges
更多建議: