URI是否短小且容易輸入
URI是否能讓人一眼看懂
URI是否只有小寫(xiě)字母組成
URI是否容易修改
URI是否反映了服務(wù)器端的架構(gòu)
URI規(guī)則是否統(tǒng)一
有沒(méi)有使用合適的HTTP方法
URI是用到的單詞所表示的意思是否和大部分API相同
URI是用到的名詞是否采用了復(fù)數(shù)形式
URI里有沒(méi)有空格符及需要編碼的字符
URI里的單詞和單詞之間有沒(méi)有使用連接符
分頁(yè)的設(shè)計(jì)是否恰當(dāng)
登錄有沒(méi)有使用OAuth2.0
響應(yīng)數(shù)據(jù)格式有沒(méi)有使用JSON作為默認(rèn)格式
是否支持通過(guò)查詢(xún)參數(shù)來(lái)指定數(shù)據(jù)格式
是否支持不必要的JSONP
響應(yīng)數(shù)據(jù)的內(nèi)容能不能從客戶(hù)端指定
響應(yīng)數(shù)據(jù)中是否存在不必要的封裝
響應(yīng)數(shù)據(jù)的結(jié)構(gòu)有沒(méi)有盡量做成扁平化
響應(yīng)數(shù)據(jù)有沒(méi)有用對(duì)象來(lái)描述,而不是用數(shù)組
響應(yīng)數(shù)據(jù)的名稱(chēng)所選用的單詞的意思是否和大部分API相同
響應(yīng)數(shù)據(jù)的名稱(chēng)有沒(méi)有用盡可能少的單詞來(lái)描述
響應(yīng)數(shù)據(jù)的名稱(chēng)由多個(gè)單詞連接而成時(shí)犁享,連接方法在整個(gè)API是否一致
響應(yīng)數(shù)據(jù)的名稱(chēng)有沒(méi)有使用奇怪的縮寫(xiě)形式
響應(yīng)數(shù)據(jù)的名稱(chēng)的單復(fù)形式是否和數(shù)據(jù)內(nèi)容相一致
出錯(cuò)時(shí)響應(yīng)數(shù)據(jù)中是否包含有助于客戶(hù)端剖析原因的信息
出錯(cuò)時(shí)有沒(méi)有返回HTML數(shù)據(jù)
有沒(méi)有返回合適的狀態(tài)碼
服務(wù)器端在維護(hù)時(shí)有沒(méi)有返回503狀態(tài)碼
有沒(méi)有返回合適的媒體類(lèi)型
必要時(shí)能不能支持CORS
有沒(méi)有返回Cache-Control你弦、ETag娱两、Last-Modified澈圈、Vary等首部以便客戶(hù)端采用合適的緩存策略
不想緩存的數(shù)據(jù)有沒(méi)有添加Cache-Control: no-cache首部信息
有沒(méi)有對(duì)API進(jìn)行版本管理
API版本的命名有沒(méi)有遵循語(yǔ)義化版本控制規(guī)范
有沒(méi)有在URI里嵌入主版本編號(hào)邑茄,并且能夠讓人一目了然
有沒(méi)有考慮API終止提供時(shí)的相關(guān)事項(xiàng)
有沒(méi)有在文檔里明確注明API的最低提供期限
有沒(méi)有使用HTTPS來(lái)提供API
有沒(méi)有認(rèn)真執(zhí)行JSON轉(zhuǎn)義
能不能識(shí)別X-Requested-With首部蛋叼,讓瀏覽器無(wú)法通過(guò)SCRIPT元素讀取JSON數(shù)據(jù)
通過(guò)瀏覽器訪(fǎng)問(wèn)的API有沒(méi)有使用XSRF token
API在接收參數(shù)時(shí)有沒(méi)有仔細(xì)檢查非法的參數(shù)(負(fù)數(shù)等)
有沒(méi)有在響應(yīng)消息里添加各種增強(qiáng)安全性的首部
有沒(méi)有實(shí)施訪(fǎng)問(wèn)限速
對(duì)預(yù)想的用例來(lái)說(shuō)限速的次數(shù)有沒(méi)有設(shè)置得過(guò)少
摘自《 Web API的設(shè)計(jì)與開(kāi)發(fā)》