很多人都有這樣的疑問:
rest(英文:representational state transfer,簡稱rest)描述了乙個架構樣式的網路系統,比如 web 應用程式。它首次出現在 2000 年 roy fielding 的博士**中,roy fielding是 http 規範的主要編寫者之一。在目前主流的三種web服務互動方案中,rest相比於soap(****** object access protocol,簡單物件訪問協議)以及xml-rpc更加簡單明瞭,無論是對url的處理還是對payload的編碼,rest都傾向於用更加簡單輕量的方法設計和實現。值得注意的是rest並沒有乙個明確的標準,而更像是一種設計的風格。
rest 指的是一組架構約束條件和原則。滿足這些約束條件和原則的應用程式或設計就是 restful。
restful特點包括:
1、每乙個uri代表1種資源;
2、客戶端使用get、post、put、delete4個表示操作方式的動詞對服務端資源進行操作:get用來獲取資源,post用來新建資源(也可以用於更新資源),put用來更新資源,delete用來刪除資源;
3、通過操作資源的表現形式來操作資源;
4、資源的表現形式是xml或者html;
5、客戶端與服務端之間的互動在請求之間是無狀態的,從客戶端到服務端的每個請求都必須包含理解請求所必需的資訊。
這裡以乙個物流系統為例定義一組介面,這裡需要完成的功能如下
通過需求可以清晰的看到兩個資源,物流運單和發票,分別定義為delivery和invoice,根據rest風格的特點,定義如下介面
錯誤碼:
查詢物流運單
rest建議使用get來獲取資源。
查詢所有:
url:[get]/delivery
response: [ , ]
根據id查詢
url:[get]/delivery/
response:
多條件查詢
url:[get]/delivery/?mot=&carrier=...
response: [ , ]
錯誤碼:
在實際應用中,這個查詢被挑戰的最多
修改物流運單
rest建議使用put來獲取資源。
修改物流運單介面
url:[put]/delivery/
request:
response:
錯誤碼:
在實際應用中,這個修改操作還面臨著批量修改和部分修改的挑戰
刪除物流運單
rest建議使用delete來獲取資源。
刪除物流運單介面
url:[delete]/delivery/
response:
實際操作還有批量刪除的場景
批量上傳物流運單
rest沒建議
rest沒建議
發票管理介面。參照物流運輸單來一套就好了。
統計介面
統計資訊是發票和運單的綜合資料,我們稱他為分攤後發票,是每個發票在單個運單上的金額資訊,記為delivery-invoice。在後台可以有乙個元件在自動更新。雖然這個介面是乙個查詢介面,但是查詢的內容不是原始資料,是統計資料,不知道應該叫什麼url了。
技術和規範都是服務於業務的,在業務需求的推動下,所有的技術和規範必須與時俱進。針對上面提到的問題,做做了一些調整。
批量建立
建立物流運單介面
url:[post]/delivery
head: rest_command=batch_create
request:
response: , ...]
}
查詢物流運單
修改物流運單
刪除物流運單
刪除操作在刪除物件不存在時直接返回,因為期望結果和當前結果一致的。
批量上傳物流運單
批量上傳可以按照批量建立的介面做。更新rest_command=batch_upload。
統計介面
統計資訊是發票和運單的綜合資料,我們稱他為分攤後發票,是每個發票在單個運單上的金額資訊,記為delivery-invoice。在後台可以有乙個元件在自動更新。雖然這個介面是乙個查詢介面,但是查詢的內容不是原始資料,是統計資料,所以命名為delivery-invoice-report。
url:[post]/delivery-invoice-report
head: rest_command=generate
request:
response:
}
正確姿勢的verticle align
1.先看後面一句 在表單元格中,這個屬性會設定單元格框中的單元格內容的對齊方式。這很容易理解,如果給乙個 的td加乙個vertical align middle的樣式,裡面的內容會垂直居中,同樣的如果給乙個vertical align bottom就會底部對齊,如果給乙個vertical align...
正確上網的姿勢
1.購買國外伺服器,目前使用的是vultr,乙個月5刀。支援支付寶充值,最低10美元起。vultr相關鏈結 2.使用xshell連線伺服器 官方鏈結。安裝完成後新建會話 alt n 依次填寫圖中資訊。名稱可以是vultr或者其他,協議選擇ssh,主機填寫之前的ip address,埠號選擇22。連線...
正確的打日誌姿勢
程式中記錄日誌一般有兩個目的 troubleshooting和顯示程式執行狀態。好的日誌記錄方式可以提供我們足夠多定位問題的依據。這周看過很多 對裡面的日誌記錄方式有些想法,今天是週末,也想總結下我對這個問題的看法。日誌記錄大家都會認為簡單,但如何通過日誌可以高效定位問題可不是簡單的事情。這裡我會寫...