URN作用就好像一個人的名字,
URL就像一個人的地址(定位該資源的主要訪問機制(如其網絡“位置”))。
換句話說:URN確定了東西的身份,URL提供了找到它的方式。
URI:Uniform Resource Identifier,統一資源標識符
URL:Uniform Resource Location統一資源定位符
REST
REST即Representational State Transfer 即表現層狀態轉換。HTTP1.0面向的是Web的靜態文本,隨着Ajax等出現,需要制定新的協議規范動態富文本的傳輸和使用。
REST的五個關鍵詞:
資源(resource):是互聯網中信息數據的一種抽象性描述,REST架構即面向資源的架構,資源是整個網絡處理的核心。
資源表述(representation): 即資源的表現形式,常用的有HTTP文本,Json,XML等。
狀態轉移(state transfer):資源的轉化或則傳輸(“狀態”指的是資源在某一時刻的表現形式,“轉移”是指按照一定的邏輯轉化資源表現形式或者傳輸資源)。
統一接口(Uniform inference):因為是分布式架構,為了方便不同服務器用戶使用和規范,REST要求使用統一的接口規范。
超文本驅動:REST架構的提出很大程度上是用來指導HTTP1.1協議的制定,支持超鏈接和URI形式的驅動方式,URI可以理解成資源的唯一標志,是資源的地址。
REST的五個架構約束
客戶-服務器:REST是一種響應式架構,一般只允許客戶端主動向服務器端發起響應請求,服務器端做出對應的響應操作。
無狀態:狀態是指服務請求的狀態,是用戶交互時的會話信息。有狀態的Web服務會將用戶的相關信息保存在與該用戶交互的服務的session中,Client的用戶請求只能被該server接受和理解,不利於負載均衡。無狀態的Web服務中,Clinet的用戶請求必須攜帶服務要參考的全部信息,每一個請求都是獨立的,可以被任何可用的服務接受,便於進行擴展。
緩存:指的是客戶端可以緩存一些需要的數據,以便於同樣的請求操作復用。
統一接口: 參考上述“五個關鍵詞”。
分層系統:REST將結構分層的思想使得各層服務器相對獨立,各層服務器只需面向直接相鄰的服務器或用戶,提高了系統的可伸縮性。
REST的六個特征
面向資源、可尋址、連通性、無狀態、統一接口、超文本驅動。
可尋址:URI是資源的唯一標識(地址),系統可根據URI定位或重定位到資源。
連通性:資源在設計時要考慮資源之間的聯系,避免存在孤立的資源。
RestFul 一種url連接新寫法,遵守http協議,和之前連接寫法沒有本質上的不同,url參數拼接方式改變,
參數拼接 login?username=zhangsan 改為了 login/zhangsan 更加安全
RestFul的響應信息是json,細分了多種請求方式的使用
get 查詢post 添加 表單提交delete 刪除patch 修改put 添加
-
@RestController= @Controller+@ResponseBody
相當於@Controller+@ResponseBody兩個注解的結合,返回json數據不需要在方法前面加@ResponseBody注解了,
但使用@RestController這個注解,就不能返回jsp,html頁面,視圖解析器無法解析jsp,html頁面
-
查詢 get方式請求
可以在Controller中設置必須使用get請求
@RequestMapping(path = "getAllGuru",method = RequestMethod.GET)
method = RequestMethod.GET 規定請求類型為Get
-
@GetMapping 等價於 @RequestMapping(path = "getAllGuru",method = RequestMethod.GET) 要求請求方式必須是get
@PostMapping
@DeleteMapping
@PatchMapping
-
@PathVariable("name") 獲得地址中的參數 用於Rest風格 配合占位符的url地址寫法使用 "testGet/{name}"
@RequestParam request.getAttribute()
@GetMapping("testGet/{name}")
public String testGet(@PathVariable("name") String name){}