JAVA微服務應用(1)--SpringBoot中的REST API調用(學習筆記)


  好長時間沒有寫學習小結了,最近寧正好看了小馬哥的微服務系列之《Spring Boot》系列,頗有收獲,並且公司也布置一個課題就是關於Spring中的REST API調用。於是乎回歸本行,再次稍微講講這幾天的學習與總結。其中借鑒了小馬哥的一些思想也希望和大家分享出來一起學習一起討論,如果有講的不對或者講的不好的地方請大家一定要加我微信gcl18360939450並備注本文標題。總之話不多說,今天就來看看Spring中的REST API調用。

  首先,學習Spring中的REST就必須明白什么是REST。

   一.定義

    百度百科對REST進行了英文補全----Representational State Transfer,根據字母意思大致就是具有表達性質的狀態傳輸。他是Roy Thomas Fieding在一篇博士論文中提出的一種軟件架構風格。相對應地還有SOAP,WSDL等等。

  明白這點,其實REST(也可以叫做Restful)就是一種軟件架構的風格之后,那么他相對於SOAP,WSDL又有哪些異同?

  二.架構屬性

    a.性能:

      性能上屬於輕量級架構(支持XML,HTML,JSON),因為JSON在數據級別上最為輕量級,因此REST架構主要使用JSON進行數據交互

    b.可伸縮性

    c.統一接口:

      uri的命名的需要見知意,並於對應的資源相對應。若是uri的定義過於復雜或者過於隨意則是一種反REST的表現

    d.簡化性

    e.組建(可修改/通訊可見/可以移植)

  三.架構約束

    a.c/s架構方式

    b.無狀態:

      服務端客戶端不是一直保持聯通

    c.可緩存:(請求頭中的標簽,來設置緩存;cookie等等)

    d.分層系統(MVC分層結構)

    e.按需代碼

    f.同意接口

   以上作為REST的核心便是--統一接口了,同意接口的實現分別可以從1.資源識別,資源操作,自描述信息(包括請求頭中的相關信息,超媒體(HATEOAS),以下詳細說明:

    五.統一接口

    a資源識別,是web層中暴露給互聯網之中的,跟上面一致,資源需要按照一定的規律不可以反REST

    b.資源操作:

        Http verbs:GET ,PUT ,POST ,DELETE 

        其中 GET,PUT,DELETE是密等的,POST是非密等。所謂密等就是表單是否重復創立於多次提交問題。

    c.自描述

      1.Content-type

      2.MIME-Type

      3.MEDIA Type:application/javascript.  text/(html/xml/json)

     f:HATEOAS(超媒體)

   接下來,就是Spring中的REST的應用

 

    6.Spring 中的REST

 

     核心接口(注意,下面的接口都是適用於任何形式的請求)
      1.定義相關
        @Controller
        @RestController

      2.映射相關  
        @RequestMapping
        @PathVariable

      3.請求相關
        @RequestParam
        @RequestHeader
        @CookieValue
        RequestEntity

 

      4.響應相關(間上圖)
        @ResponseBody(RestController =  ResponseBody+Controller且確定返回頭)
        ResponseEntity(不確定返回頭)

      5.Json

 

      6.xml

 

     通過對核心API的調用,完成對接口的統一和規范,這也是REST的主要特點。

  講了這么多,REST和核心在於Controller層對請求的接受與相應,其中包括不同的數據格式以及不同的請求頭等等,總之,現在的軟件架構越來越趨向於REST方式來調用API,我寫的不好的地方或者不正確的地方都歡迎網友大大們來指正。寫了這么多,最好洗洗睡吧。

          

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM