1. 程式人生 > >如何快速地在java中使用Restful API

如何快速地在java中使用Restful API

什麼是Restful API?REST(英文:Representational State Transfer,簡稱REST),它是一種軟體架構風格、設計風格,而不是標準,只是提供了一組設計原則和約束條件。它主要用於客戶端和伺服器互動類的軟體。基於這個風格設計的軟體可以更簡潔,更有層次,更易於實現快取等機制。下面是Restful對應的幾種請求方式,我們常用到的是前4種,後面的僅供參考和了解:1、GET 獲取資源2、POST 新建資源3、PUT 更新資源4、DELETE 刪除資源5、TRACE提供一種方法來測試當一個請求發生的時候,伺服器通過網路收到的內容6、HEAD HEAD請求和GET請求資源類似,但是僅僅返回響應的頭部(沒有具體的響應體)
7、OPTIONS OPTIONS方法允許客戶端請求一個服務所支援的請求方法。它所對應的響應頭(response header)是Allow, 它非常簡單地列出了支援的方法。例:200 OKAllow: HEAD,GET,PUT,DELETE,OPTIONS8、CONNECT 主要用來建立一個對資源的網路連線(通常請求一些能夠把HTTP連線轉發成為TCP連線並保持的代理)。一旦建立連線後,會響應一個200狀態碼和一條“Connection Established”的訊息。如何在java的Spring架構中使用Restful API?使用過Spring MVC架構,就應該知道Restful API作用的層級是Controller層,也就是我們的控制層。我們開發過程中也是使用了這些知識點的,只不過可能沒系統學習和使用過Restful API介面。下面,我們通過了解Restful API各個註解的情況,來理解它。1、@Controller與@RestController
@RestController相當於是@[email protected];@Controller可以用於返回檢視,如JSP、HTML頁面,也包括返回ModelAndView物件。如果僅僅需要返回資料,那我們再新增一個@ResponseBody就可以了,等同於使用了一個@RestController。2、@RequestMapping與(@GetMapping、@PostMapping、@PutMapping、@DeleteMapping)首先檢視@RequestMapping註解包含的註解屬性value/path 指定請求的實際地址,指定的地址可以是URI Template 模式;method 指定請求的method型別, GET、POST、PUT、DELETE等
;consumes 指定接受提交請求的內容型別(Content-Type),例如application/json, text/html;produces 指定返回的內容型別,僅當request請求頭中的(Accept)型別中包含該指定型別才返回;params 指定request中必須包含某些引數值時,才讓該方法處理;headers 指定request中必須包含某些指定的header值,才能讓該方法處理請求。我們可以看到,在@RequestMapping中,有一個method屬性,當指定了具體的值時,我們可以簡化成相應的註解,譬如:@RequestMapping(method = RequestMethod.GET)就對應著我們的@GetMapping註解。3、@RequestMapping的屬性配置method屬性文章開篇就講解了,我們常用的有4種,對應增刪改查,用RequestMethod的方式呼叫。consumes和produces類似,分別對應接收資料型別和返回資料型別(可以是多個型別,用花括號包裹多個請求方式),配置也很簡單,用MediaType呼叫。1)value/path屬性的具體配置value/path的值可以是以下幾種型別:A、具體的路徑值;B、含有某些變數的路徑值;C、含有正則表示式的路徑值。例A:
@RequestMapping(value="/hello")    
public String sayHi() {        
    return "Hi,nice to meet you.";    
}
例B:當使用變數的時候,斜槓後面跟一個花括號,花括號內部填寫變數名,之後再用@PathVariable註解來接收這個變數。
@RequestMapping(value="/hello/{name}")    
public String sayHi(@PathVariable String name) {        
    return "Hi:"+name+",nice to meet you.";    
}
變數也可以在層級中使用,譬如:
@RequestMapping(value="/hello/{name}/{age}") 
public String sayHi(@PathVariable String name,@PathVariable Integer age) { 
    return "Hi:"+name+",you are "+age+" years old."; 
}
同一個訪問控制器,還可以對映多個請求路徑,譬如:
@RequestMapping(value={"/hello/{name}","/hi/{name}"}) 
public String sayHi(@PathVariable String name) { 
    return "Hi:"+name; 
}
例C:
@RequestMapping(value="/hello/{age:^[1-9]\d$}/{name}") 
public String sayHi(@PathVariable String name,@PathVariable Integer age) { 
    return "Hi:"+name+",you are "+age+" years old."; 
}
正則表示式匹配請求路徑,譬如我這裡要求年齡是兩位數,數字為其他的都不會被匹配到。正則表示式書寫的規則網上一抓一大把,這裡推薦一個網站,它能將你輸入的正則表示式用圖形的方式展示出來,更加直觀地看出我們寫的規則是否正確:https://regexper.cn2)params屬性的具體配置params指定了url引數(形如:localhost:23172/sfa/placeOrderController/hello/spirit?gender=male)、form-data或者x-www-form-urlencoded中的引數,譬如必需的引數是什麼(如下age引數),引數的鍵值對必須是什麼(如下gender=male引數)。跟其他屬性類似,支援單個或多個引數填寫。注意:params屬性中指定了引數是必須的,再在@RequestParam中指定引數不必須(@RequestParam(required = false)),@RequestParam的設定是無效的,即params屬性的配置高於@RequestParam。例:
@RequestMapping(value="/hello/{name}", params={"age","gender=male"}) 
public String sayHi(@PathVariable String name,@PathVariable Integer age) { 
    return "Hi:"+name+",you are "+age+" years old."; 
}
3)headers屬性的具體配置headers指定了request中,頭部需要的引數資訊,與之不符的請求都將被拒絕。同樣支援單個或多個引數填寫。例:
@RequestMapping(value="/hello/{name}", headers={Referer=http://www.baidu.com/}) 
public String sayHi(@PathVariable String name) { 
    return "Hi:"+name; 
}
4、@PathVariable與@RequestParam這兩個註解都是用於處理引數的,那他們有什麼不同呢?其實看他們的名字,也能理解,@PathVariable是“路徑變數”的意思,那他處理的引數就是@RequestMapping中value/path請求路徑對應的變數。@RequestParam是“請求引數”,獲取的是鍵值對形式的引數,也就是上文提到的params屬性對應的引數。

相關推薦

快速理解Java的五種單例模式

嵌套類 ati class 由於 aop 適合 singleton 重復 code 解法一:只適合單線程環境(不好) package test; /** * @author xiaoping * */ public class Singleton { pri

javaAPI

API(Application Programming Interface) :應用程式程式設計介面 Java API         就是Java提供給我們使用的類,這些類將底層的實現封裝了起來, &nb

OSI七層網路模型與TCP/IP四層網路模型及在java對應API(Socket、HttpServlet)實現

1、OSI七層網路模型 OSI七層網路模型從上到下依次是:應用層、表示層、會話層、傳輸層、網路層、資料鏈路層和物理層。 其中應用層、表示層、會話層和傳輸層被稱作主機層,是開發工程師通過開發應用程式處理和實現的內容;而網路層、物理層和資料鏈路層被稱作媒體層,是網路工程師所研究的物件。

Java呼叫Restful API介面幾種方式

  2018年01月16日 22:18:40 Exceed Oneself 閱讀數:1968 摘要:最近有一個需求,為客戶提供一些Restful API 介面,QA使用postman進行測試,但是postman的測試介面與java呼叫的相似但並不相同,於是想自己

javaAPI,學習object的類equals()方法的問題,

一、什麼是API 即:Application Programing interface應用程式介面。就是javajdk中提供給我們使用的類,已經封裝好的,直接拿來用就行了。 二、Object類 object類是所有類的父類,在lang包中,lang包不用匯入。 介面中沒有構造方法

【實踐筆記】Spring MVCRestful API使用 Swagger2 構建

1、Swagger2是什麼? Swagger 是一款RESTFUL介面的文件線上自動生成+功能測試功能軟體。 Swagger 是一個規範和完整的框架,用於生成、描述、呼叫和視覺化 RESTful 風格的 Web 服務。總體目標是使客戶端和檔案系統作為伺服器以同樣的速度來更新。檔案的方法,引數和模型緊密

JAVA設計模式之單例模式-快速理解Java的五種單例模式(轉)

百度百科對單例模式的介紹 顯然單例模式的要點有三個;一是某個類只能有一個例項;二是它必須自行建立這個例項;三是它必須自行向整個系統提供這個例項。 從具體實現角度來說,就是以下三點:一是單例模式的類只提供私有的建構函式,二是類定義中含有一個該類的靜態私有物件,三是該

Java時間API使用詳解

目錄 Java中時間API使用詳解 1. 時區概念 2. 幾種常見的時間 3. 時間戳 4. Java中的時間API 5. Java8中新新增的時間API 6.

如何快速java使用Restful API

什麼是Restful API?REST(英文:Representational State Transfer,簡稱REST),它是一種軟體架構風格、設計風格,而不是標準,只是提供了一組設計原則和約束條件。它主要用於客戶端和伺服器互動類的軟體。基於這個風格設計的軟體可以更簡潔,

框架RESTful api快速領悟():token認證

我們講一下RESTful api中很重要的環節—token認證。本課程主要演示如何快速藉助YII2配置出簡單的token認證方法,並給出擴充套件的思路 1.建立一個用來作許可權驗證的表 CREATE TABLE `clients` ( `cl

java對List去重並排序、如何快速去掉兩個List相同的部分

1:去重並排序 package twolist; import java.util.Collections; import java.util.Comparator; import java.util.HashMap; import java.util.Has

【小家javaRestful風格的API設計,怎麼實現批量刪除?

相關閱讀 每篇一句 面試高大上,面試造飛機,工作擰螺絲 因此不能以為自己工作覺得還OK,就覺得自己技術還不錯了 如題,指的是在restful風格的url設計中,怎麼實現批量刪除呢? 這裡指的刪除是真刪除,不是邏輯刪除。如果是邏輯刪除,其實就是upd

3.Spring Boot使用Swagger2構建強大的RESTful API文檔

pack 效果 type 現象 業務邏輯 blank depend imp any 原文:http://www.jianshu.com/p/8033ef83a8ed 由於Spring Boot能夠快速開發、便捷部署等特性,相信有很大一部分Spring Boot的用戶會用來構

Yii2框架RESTful API教程(一) - 快速入門

比較 exp values cnblogs -- restful extends .cn pat 前不久做一個項目,是用Yii2框架寫一套RESTful風格的API,就去查了下《Yii 2.0 權威指南 》,發現上面寫得比較簡略。所以就在這裏寫一篇教程貼,希望幫助剛接觸Yi

通過beego快速創建一個Restful風格API項目及API文檔自動化(轉)

master 功能 eas study run 視頻教程 innodb uic default 通過beego快速創建一個Restful風格API項目及API文檔自動化 本文演示如何快速(一分鐘內,不寫一行代碼)的根據數據庫及表創建一個Restful風格的API項目,

Spring Boot使用Swagger2構建強大的RESTful API文檔

TP app 接口 ear tro 參數 stc 業務邏輯 schema 由於Spring Boot能夠快速開發、便捷部署等特性,相信有很大一部分Spring Boot的用戶會用來構建RESTful API。而我們構建RESTful API的目的通常都是由於多終端的原因,這

使用Swagger2構建SpringMVC項目Restful API文檔

部署 success 直接 資源 路徑 ng- extends 信息 org 使用Swagger自動生成API文檔,不僅增加了項目的可維護性,還提高了API的透明度更利於快速測試等工作,便於更快地發現和解決問題。 本篇文章只記錄整合過程,關於Security Configu

面試題思考:java快速失敗(fail-fast)和安全失敗(fail-safe)的區別是什麽?

無效對象 ring list 改變 ava ret fail last 原理 一:快速失敗(fail—fast) 在用叠代器遍歷一個集合對象時,如果遍歷過程中對集合對象的內容進行了修改(增加、刪除、修改),則會拋出Concurrent Modificat

Java執行緒池基本api及其作用

1.執行緒池相關的類 2.重要類的api及其方法 Executors.newCachedThreadPool() 建立一個可快取的執行緒池 Executors.newSingleThreadExecutor();建立一個只有一個執行緒執行的 不可修改的執行緒池  

springMvcrestful風格的api路徑把小數點當參數,SpringMvcurl有小數點

pub springmvc line name object ews mapping html 兩種 在springMvc web項目中restful風格的api路徑中有小數點會被過濾後臺拿不到最後一個小數點的問題, 有兩種解決方案: