上一篇的文章Request Drivne Architecture介紹,我們說明Request Driven的由來與運作流程。
這一篇的文章著重講RESTFul API:
好了~讓我們開始吧!
Non-RESTFul API基本不會遵循HTTP/HTTPS的協定,API的URL可以隨意亂命名,像是
這樣的命名規則不僅讓團隊的成員們看得霧颯颯,甚至還開出功能一樣的API,這會讓團隊的開發效率大大地降低,溝通成本變的非常高!甚至最後還會吵起來!!
我們簡單舉個實際的訂單系統為例:
假設今天客戶有個查看購物車內容的需求,我們根據這個需求列出以下兩項:
有了這兩項之後,我們可以進一步開出查看購物車內容的API Spec,沒有使用RESTful的Request Driven的API如下所示:
api/getOrderDetails/user/{userId}/order/{orderId}
這種命名規則有幾個缺陷:
這些缺陷不僅讓團隊的成員看得霧颯颯,心裡會想getOrderDetails是什麼?
是拿list嗎?還是一個具有多個欄位的json?
顯然這種命名方法不是很恰當,對吧!
為了要解決這些問題,RESTFul API就誕生了。
RESTFul(Representational State Transfer) API是一種基於Web設計的風格,它用於建立可擴展而且好維護的Web服務,在Web中很受歡迎的一種設計風格,在微服務同樣也是如此。
為什麼RESTFul這麼受歡迎?
原因是RESTFul的主要目的就是讓Web服務更加簡潔明瞭、好理解和統一的一種設計風格或者說是協定。
有點抽象對吧?我們同樣以訂單系統為例:
[GET] api/users/{userId}/orders/{orderId}
相比於Non-RESTFul將getOrderDetails這種具有動詞含義加進API,而是採用[GET]的統一風格讓大家理解這隻是GET的API,並帶兩個參數: userId與orderId,讓團隊對這隻API的理解不會搞錯。
甚至可以基於[GET]延伸到[POST], [PUT]
[POST] api/users
[PUT] api/users
RESTFul的優點:
舊系統中或許還存在Non-RESTFul的設計風格,由於它的缺陷讓它不適合應用到現代的軟體開發,我們可以通過引入RESTFul API的設計風格,可以提高API的可讀性、可維護性和可擴展性。
好了~~今天就到這邊!!!
明天會開講Request Driven的缺點~