您好,登錄后才能下訂單哦!
這篇文章主要介紹了springboot RESTful以及參數注解的示例分析,具有一定借鑒價值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。
Spring的復雜性不是來自于它處理的對象,而是來自于自身,不斷演進發展的Spring會帶來時間維度上復雜性,比如SpringMVC以前版本的@RequestMapping,到了新版本被下面新注釋替代,相當于增加的選項:
@GetMapping @PostMapping @PutMapping @DeleteMapping @PatchMapping
說明
@RequestMapping(method = RequestMethod.GET)的簡寫
作用:對應查詢,表明是一個查詢URL映射
@RequestMapping(method = RequestMethod.POST)的簡寫
作用:對應增加,表明是一個增加URL映射
@RequestMapping(method = RequestMethod.PUT)的簡寫
作用:對應更新,表明是一個更新URL映射
@RequestMapping(method = RequestMethod.DELETE)的簡寫
作用:對應刪除,表明是一個刪除URL映射
Patch方式是對put方式的一種補充;
put方式是可以更新.但是更新的是整體.patch是對局部更新;
@PathVariable @RequestParam @RequestBody @ModelAttribute
說明
獲取路徑參數。即url/{id}這種形式
@PathVariable綁定URI模板變量值
@PathVariable是用來獲得請求url中的動態參數的
@PathVariable用于將請求URL中的模板變量映射到功能處理方法的參數上。//配置url和方法的一個關系@RequestMapping(“item/{itemId}”)
獲取查詢參數。即url?name=這種形式
@RequestParam注解主要有哪些參數:
value
:參數名字,即入參的請求參數名字,如username表示請求的參數區中的名字為username的參數的值將傳入;
required
:是否必須,默認是true,表示請求中一定要有相應的參數,否則將報404錯誤碼;
defaultValue
:默認值,表示如果請求中沒有同名參數時的默認值,例如:
public List getItemTreeNode(@RequestParam(value=“id”,defaultValue=“0”)long parentId)
@requestBody注解常用來處理content-type不是默認的application/x-www-form-urlcoded編碼的內容,比如說:application/json或者是application/xml等。一般情況下來說常用其來處理application/json類型。
通過@requestBody可以將請求體中的JSON字符串綁定到相應的bean上,當然,也可以將其分別綁定到對應的字符串上。
在使用RESTful風格時,使用get請求,又想使用對象接收參數,就可以使用這個注解
不光適用于get請求,同樣也適用于put和delete請求
創建項目
通過spring官網創建項目
https://start.spring.io/
項目名稱取為studyRest
項目依賴WEB
使用@RestController標記類為提供Restful服務的Contoller
@GetMapping為資源定位一部分,也就是url,對應http://localhost:8080/test
@RestController public class MyRestContoller1 { @GetMapping("/test") public Map<String, String> getData() { Map<String, String> data = new HashMap<String, String>(); data.put("id", "111"); data.put("name", "zhangsan"); return data; } }
測試(這里使用瀏覽器測試,后續使用Postman工具)
@GetMapping關鍵字對應GET請求,也就是查詢,請求還可以有參數,對應@PathVariable與@RequestParam注解
@GetMapping("/test/{id}") public Map<String, String> getData2(@PathVariable String id, @RequestParam(required = false) String name) { Map<String, String> data = new HashMap<String, String>(); data.put("id", id); data.put("name", name); return data; }
測試,返回值為入參傳入參數
新增使用@PostMapping描述URL
新增一般都會帶有大量數據,一般都是使用@RequestBody注解封裝參數
@PostMapping("/test2/add") public Map<String, String> addData(@RequestBody Map<String, String> data) { return data; }
測試
注意兩點,不正確都會報錯
請求類型必須是POST
Content-type必須要設置為application/json,因為入參形式為JSON格式
使用上與Post一致,只是不同類型需要使用對應的主機
PUT
:@PutMapping
DELETE
:@DeleteMapping
@PutMapping("/test2/update") public Map<String, String> updateData(@RequestBody Map<String, String> data) { return data; } @DeleteMapping("/test2/delete") public Map<String, String> deleteData(@RequestBody Map<String, String> data) { return data; }
RequestMapping是一個通用注解,包含上述所有操作
@RestController @RequestMapping(value = "/parent") public class RequestRestContoller { @RequestMapping(value = "/get", method = RequestMethod.GET) public Map<String, String> get() { Map<String, String> data = new HashMap<String, String>(); data.put("id", "111"); data.put("name", "zhangsan"); return data; } @RequestMapping(value = "/add", method = RequestMethod.POST) public Map<String, String> add() { Map<String, String> data = new HashMap<String, String>(); data.put("id", "111"); data.put("name", "zhangsan"); return data; } @RequestMapping(value = "/update", method = RequestMethod.PUT) public Map<String, String> update() { Map<String, String> data = new HashMap<String, String>(); data.put("id", "111"); data.put("name", "zhangsan"); return data; } @RequestMapping(value = "/delete", method = RequestMethod.DELETE) public Map<String, String> delete() { Map<String, String> data = new HashMap<String, String>(); data.put("id", "111"); data.put("name", "zhangsan"); return data; } }
上述還有貼在class上面的注解:@RequestMapping(value = "/parent"),如果是class上面的注解,那么方法上面的url需要加上class上面的注解
如:http://localhost:8080/parent/get或http://localhost:8080/parent/add
其中可以屬于請求參數和響應數據類型
@RequestMapping(value = "/parent", consumes = MediaType.APPLICATION_JSON_VALUE, produces = MediaType.APPLICATION_JSON_VALUE)
其中consumes 約束入參類型,produces 約束響應數據類型
測試Content-Type:text/plain報錯,由于設置了JSON格式
支持哪些格式參考Media定義
org.springframework.http.MediaType
這里擴展一下,返回XML格式數據
引入XML依賴包
<dependency> <groupId>com.fasterxml.jackson.dataformat</groupId> <artifactId>jackson-dataformat-xml</artifactId> </dependency>
測試類
@RestController public class DataRestContoller { @RequestMapping(value = "/addJsonResponseXml", consumes = MediaType.APPLICATION_JSON_VALUE, produces = MediaType.APPLICATION_XML_VALUE) public Map<String, String> add(@RequestBody Map<String, String> data) { return data; } }
測試
感謝你能夠認真閱讀完這篇文章,希望小編分享的“springboot RESTful以及參數注解的示例分析”這篇文章對大家有幫助,同時也希望大家多多支持億速云,關注億速云行業資訊頻道,更多相關知識等著你來學習!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。