架構設計優雅編程之REST

2020-12-12 瘋狂的麥斯基

背景

最近準備接手公司一個long long ago的項目,發現其中REST接口調用參差不齊,於是才想寫一篇關於REST介紹;一方面鞏固一下原有的知識儲備,另一方面也分享給大家,文中有誤解的地方,煩請大夥留言一起探討,一起共勉!

我要飛的更高

本篇文章主要從以下三個方面來講:

REST概念是什麼?前後端通信請求方式?REST API接口幾種調用方式?

rest api

REST概念是什麼?

百度百科這樣來定義:表現層狀態傳遞(英文:Representational State Transfer,簡稱REST)是Roy Fielding博士在2000年他的博士論文中提出來的一種全球資訊網軟體架構風格。它是一種針對網絡應用的設計和開發方式,可以降低開發的複雜性,提高系統的可伸縮性。

前後端通信請求方式?

REST要求客戶端向服務端發出請求以獲得或修改伺服器上的數據。請求通常由以下部分組成:

HTTP動詞,它定義了要執行的操作類型;HEARD頭部,它允許客戶端傳遞關於請求的信息;CONTENT資源的路徑;DATA數據的可選消息主體。

REST接口調用方式?

REST接口調用,一般前端通過異步調用(Ajax)方式,而後端則可以使用多種方式來處理,常見的有以下幾種:

HttpURLConnection方式;HttpClient方式【最常用】;Spring的RestTemplate方式。HttpURLConnection詳解:

HttpURLConnection是一種多用途、輕量極的HTTP客戶端,使用它來進行HTTP操作可以適用於大多數的應用程式。雖然HttpURLConnection的API提供的比較簡單,但是同時這也使得我們可以更加容易地去使用和擴展它。HttpURLConnection是Java的標準類,它繼承自URLConnection,可用於向指定網站發送GET請求、POST請求。

HttpURLConnection是同步請求,因此需放在子線程中,使用實例如下:

HttpClient詳解【最常用】:

HTTP 協議在 Internet 上使用得最多、最重要的協議了,越來越多的 Java 應用程式需要直接通過 HTTP 協議來訪問網絡資源。雖然在 JDK 的 java net包中已經提供了訪問 HTTP 協議的基本功能,但是對於大部分應用程式來說,JDK 庫本身提供的功能還不夠豐富和靈活。HttpClient 是Apache HttpComponents 下的子項目,用來提供高效的、最新的、功能豐富的支持 HTTP 協議的客戶端編程工具包,並且它支持 HTTP 協議最新的版本和建議。

HttpClient請求方式有多種,寫法基本上一致,現最POST方式進行代碼實例:

Spring的RestTemplate詳解:

使用RestTemplate時,需要在spring-mvc.xml或者application.xml配置文件中加入相應的配置信息,spring boot項目同理:

SimpleClientHttpRequestFactory創建方式

RestTemplate配置信息

HttpComponentsClientHttpRequestFactory方式【推薦使用】:

附註

因時間有限,文章中細節應用未在此體現,大家閱讀時若有疑問可以隨時留言討論。小編在這裡致敬每一位技術人,大家辛苦啦!!!!

相關焦點

  • 基於REST架構的Web Service設計
    首頁 > 教程 > 關鍵詞 > web最新資訊 > 正文 基於REST架構的Web Service設計
  • 你一般如何做可編程邏輯設計的架構?
    你該如何開始做可編程邏輯設計的架構?在我有一次同時在為三個FPGA項目設計架構(作為衛星開發的一部分)時,這個問題浮現在我的腦海中。當然,由於最終應用場景的原因,該架構受到了主承包商和航天局的多次審查。因此,我將儘可能詳細的畫出架構圖,以便讓我的設計團隊可以很輕鬆地從中進行工作。
  • 編程架構師需要具備哪些特點
    在網際網路行業中,編程架構師需要具備哪些特點呢?Java架構師在網際網路行業中是一個不錯的方向,在不久的將來我們的日常生活也會被大數據引導,生活也會更加方便。編程方面的人才會變得越來越重要,這個職業主要是針對大數據平臺程序架構進行設計,做開發構架規範,進行核心代碼的編寫。
  • REST API設計優秀實踐之參數與查詢的使用
    【51CTO.com快譯】眾所周知,我們設計API的目標往往是要通過我們的服務,為用戶提供一定的功能。在程式語言中,我們可以通過某個函數來請求對應的返回值。如果一個函數不帶任何參數,那麼我們將無法直接去影響它的返回值。API也是如此,尤其是那些無狀態的REST API。畢竟,所有REST的交互都是無狀態的。也就是說,每個請求都會包含那些方便連接器理解該請求的所有信息,而且它們與之前的任何請求都無關。
  • 架構設計
    軟體項目使用的程式語言、框架、組件、資料庫、人工智慧、大數據等技術,都有學習成本要讓軟體穩定運行也複雜。軟體開發完成上線後,充滿了各種不確定性,比如雲服務商可能宕機,比如明星發個微博可能造成系統癱瘓,又比如有人刪庫跑路了正因為存在以上這幾個原因,我們需要架構設計去降低這些複雜性降低開發成本。
  • 軟體項目實訓及課程設計指導——如何實現面向對象的系統架構設計
    通過這套設計準則,架構設計師可以把一個複雜的軟體應用系統劃分為一些相對獨立的子系統,並在對各種繁雜的技術應用要求和功能實現中獲得最優雅、簡潔和合理的解決方案。,並且面向方面(AOP)的設計思想彌補了面向對象(OOP)設計思想在實際軟體應用系統開發應用中所存在的相關缺陷——因為面向對象(OOP)的編程技術不能實現軟體應用系統中的核心關注點與橫切關注點的相互分離,而面向方面(AOP)的編程思想正是為了解決這個問題而提出的。
  • 從分而治之的思想到架構的設計
    隔離級別越大,說明打通隔離越困難,修改調整越困難,但同時也意味著設計的架構越容易被遵守。因此當你堅信架構劃分正確,不同部分需要儘可能分割時,可以採用基於進程甚至更高級別的隔離。但對於業務變化依然很大,邊界不清晰,難以把握全局時,採用不同進程隔離或者不同jar的隔離可能就不合適,因為架構依然可能還需要調整,如果已經拆分了進程、jar那麼架構調整的難度將大幅增加。
  • 軟體架構設計:軟體質量屬性、架構風格的案例
    在項目之初,公司的系統分析師對該集成開發環境的需求進行了調研和分析,具體描述如下:a.需要同時支持該廠商自行定義的應用程式語言的編輯、界面可視化設計、編譯、調試等模塊,這些模塊產生的模型或數據格式差異較大,集成環境應提供數據集成能力。集成開發環境還要支持以適配方式集成公司現有的應用模擬器工具。
  • ReactNative 的組件架構設計
    本篇較長,前面是目前 flux 開源框架的一些分析,後面是架構設計過程。您可以直奔主題。用 RN 最大的難題是設計思想的轉變,以前的設計方法論已經不太適用了。而 RN 僅僅提供了 view 的框架,構建完整 app 的架構並沒有直接提供。
  • 常見問題解答:Xilinx採用首個ASIC級UltraScale可編程架構
    採用首個ASIC級UltraScale可編程架構之首款20nm All Programmable器件開始投片   1.   · 賽靈思新的 20nm 器件採用了行業首款 ASIC 級可編程架構——UltraScale™架構。   2. 賽靈思提出的在 28nm 工藝上「領先一代」指的是什麼意思?
  • 軟體項目實訓及課程設計指導——如何實現面向服務的系統架構設計
    軟體項目實訓及課程設計指導——如何實現面向服務的系統架構設計1、什麼是基於SOA的軟體系統架構(1)什麼是面向服務的軟體系統體系架構所謂的SOA(Service-Oriented Architecture,面向服務的軟體系統體系架構
  • 豐富花藝之美|花藝架構設計
    架構不等於花藝架構是用來體現花藝作品的一個載體手法多樣,作品新穎是為花藝服務的時尚前衛的架構花藝作品造型豐富表現力強,可選用材料寬泛被越來越多地應用在各種場合準確的說是起源於德國,近年在國內也大為流行架構花藝其實是西方現代花藝的一種延伸和創新以少量的花朵,通過一個手工的架構闡述出設計者最原始的初心。
  • 架構設計的四大思維支柱
    面向整體的設計,應當有整體的參與,企業的各個部分都應當參與到整體設計中,而整體設計也應當向整個企業傳導。走不出架構師的架構設計,沒有持久的維持能力;走不出 IT 部門的架構設計,不會凝聚起整個企業;走不出企業的架構設計,就無法真正落地企業戰略。
  • REST API URI 設計 7 準則
    Java技術棧www.javastack.cn打開網站看更多優質文章在了解 REST API URI 設計的規則之前,讓我們快速過一下我們將要討論的一些術語。URIREST API 使用統一資源標識符(URI)來尋址資源。
  • 軟體項目實訓及課程設計指導——可擴展和可重用是架構設計的目標
    軟體項目實訓及課程設計指導——可擴展性和可重用性是面向對象架構設計的主要目標1、什麼是合理的軟體應用系統的系統架構設計軟體應用系統的設計人員經常會陷入一種困惑,面向對象系統架構設計結果的評價標準是什麼?
  • iOS開發之淺談MVVM的架構設計與團隊協作
    相信大家對MVC耳熟能詳,MVVM可能聽說的相對少一些,這一篇文章將會想你闡述MVVM設計,還有團隊協作的經驗分享。如果你也覺得不錯,就分享一下吧!demo:https://github.com/lizelu/MVVM今天寫這篇文章是想達到拋磚引玉的作用,想與大家交流一下思想,相互學習,博文中有不足之處還望大家批評指正。
  • AOP編程_Android優雅權限框架(1)概念基礎
    從今天開始開闢新的專題: 移動架構師專業技能深入淺出,以一步步成為架構師為目標,詳述一項架構師技能的最直接使用價值,橫向周邊知識以及縱深專業技術.作為要成為架構師的男人,即使記不了那麼多細節,但是對於大方向的把握絕對不能錯。所以,技術縱深很有必要。
  • TensorFlow架構與設計:OP本質論
    作者:劉光聰 ,中興通訊高級系統架構師,專注機器學習算法,分布式系統架構與優化。
  • REST Style來襲 LinkedIn開源Rest.li框架
    據保守估計,每個月LinkedIn API調用次數達十億次級之多。毫不誇張地說,LinkedIn就是API界的億萬富翁。如果你正在尋找基於REST方面的API,那麼LinkedIn開源的 Rest.li正是您的最佳選擇,一款RESTful服務架構框架。
  • 編程菜鳥之怎樣用Bootstrap前端框架結合ThinkPHP框架做程序設計
    對於想自學編程,而又感覺無從入門的童鞋來說,首先認準一門主流的程式語言是至關重要的,這裡舉比較常見PHP來說,PHP相比大家都聽過,它以入門較易,實例較多,開源豐富而被熟知。在你通讀並且理解需要強記的知識點後,包括不限於,數據類型、變量、運算符、流程控制語句、大量函數、數組等面向對象編程思想的類與實例化對象的應用。這時候或許你會急需上手實戰一下自己對於編程的理解和應用。那麼如果你是這樣自學發展過來的,或許ThinkPHP和Bootstrap的結合很符合你的需要。