一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - Java教程 - springboot RESTful以及參數注解的使用方式

springboot RESTful以及參數注解的使用方式

2022-02-23 00:34ZeusLuna Java教程

這篇文章主要介紹了springboot RESTful以及參數注解的使用方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教

springboot RESTful及參數注解使用

RESTful

Spring的復雜性不是來自于它處理的對象,而是來自于自身,不斷演進發展的Spring會帶來時間維度上復雜性,比如SpringMVC以前版本的@RequestMapping,到了新版本被下面新注釋替代,相當于增加的選項:

@GetMapping
@PostMapping
@PutMapping
@DeleteMapping
@PatchMapping

說明

1、@GetMapping

@RequestMapping(method = RequestMethod.GET)的簡寫

作用:對應查詢,表明是一個查詢URL映射

2、@PostMapping

@RequestMapping(method = RequestMethod.POST)的簡寫

作用:對應增加,表明是一個增加URL映射

3、@PutMapping

@RequestMapping(method = RequestMethod.PUT)的簡寫

作用:對應更新,表明是一個更新URL映射

4、@DeleteMapping

@RequestMapping(method = RequestMethod.DELETE)的簡寫

作用:對應刪除,表明是一個刪除URL映射

5、@PatchMapping

Patch方式是對put方式的一種補充;

put方式是可以更新.但是更新的是整體.patch是對局部更新;

參數注解的使用

@PathVariable
@RequestParam
@RequestBody
@ModelAttribute

說明

1. @PathVariable

獲取路徑參數。即url/{id}這種形式

@PathVariable綁定URI模板變量值

@PathVariable是用來獲得請求url中的動態參數的

@PathVariable用于將請求URL中的模板變量映射到功能處理方法的參數上。//配置url和方法的一個關系@RequestMapping(“item/{itemId}”)

2.@RequestParam

獲取查詢參數。即url?name=這種形式

@RequestParam注解主要有哪些參數:

  • value:參數名字,即入參的請求參數名字,如username表示請求的參數區中的名字為username的參數的值將傳入;
  • required:是否必須,默認是true,表示請求中一定要有相應的參數,否則將報404錯誤碼;
  • defaultValue:默認值,表示如果請求中沒有同名參數時的默認值,例如:
public List getItemTreeNode(@RequestParam(value=“id”,defaultValue=“0”)long parentId)

3.@RequestBody

@requestBody注解常用來處理content-type不是默認的application/x-www-form-urlcoded編碼的內容,比如說:application/json或者是application/xml等。一般情況下來說常用其來處理application/json類型。

通過@requestBody可以將請求體中的JSON字符串綁定到相應的bean上,當然,也可以將其分別綁定到對應的字符串上。

4.@ModelAttribute

在使用RESTful風格時,使用get請求,又想使用對象接收參數,就可以使用這個注解

不光適用于get請求,同樣也適用于put和delete請求

 

springboot Restful使用記錄

創建項目

通過spring官網創建項目

https://start.spring.io/

springboot RESTful以及參數注解的使用方式

  • 項目名稱取為studyRest
  • 項目依賴WEB

Rest組件使用

使用@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工具)

springboot RESTful以及參數注解的使用方式

@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;
	}

測試,返回值為入參傳入參數

springboot RESTful以及參數注解的使用方式

Post類型,新增操作

新增使用@PostMapping描述URL

新增一般都會帶有大量數據,一般都是使用@RequestBody注解封裝參數

	@PostMapping("/test2/add")
	public Map<String, String> addData(@RequestBody Map<String, String> data) {
		return data;
	}

測試

springboot RESTful以及參數注解的使用方式

注意兩點,不正確都會報錯

  • 請求類型必須是POST
  • Content-type必須要設置為application/json,因為入參形式為JSON格式

springboot RESTful以及參數注解的使用方式

更新與刪除操作

使用上與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使用

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格式

springboot RESTful以及參數注解的使用方式

支持哪些格式參考Media定義

org.springframework.http.MediaType

XML格式數據支持

這里擴展一下,返回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以及參數注解的使用方式

以上為個人經驗,希望能給大家一個參考,也希望大家多多支持服務器之家。

原文鏈接:https://blog.csdn.net/leipeng321123/article/details/89394315

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 欧美特级午夜一区二区三区 | 婷婷久久精品 | 黑人双渗透 | 丝袜护士强制脚足取精 | 男人都懂www深夜免费网站 | 亚州人成网在线播放 | 特级非洲黑人一级毛片 | 国产精品天天影视久久综合网 | 国产大秀视频一区二区三区 | 91素人约啪| 无码一区国产欧美在线资源 | 亚洲阿v天堂2018在线观看 | a级毛片毛片免费很很综合 a级黄色视屏 | 皇上撞着太子妃的秘密小说 | 久久不射视频 | 国产成人精品午夜免费 | 国产精品永久免费视频观看 | 国产亚洲99影院 | 日韩一区二区中文字幕 | 亚洲六月丁香六月婷婷蜜芽 | 91中文在线 | 亚洲色图欧美图片 | 成人在线视频观看 | 亚洲国产精品久久精品成人网站 | 成年女人毛片免费观看97 | 国产91网站在线观看 | 色一情一区二区三区四区 | 91久久综合 | 日本激情小说 | 亚洲酒色1314狠狠做 | 青山葵在线 | 性xxxx中国| 国产79av| 996热在线视频 | 免费看欧美一级特黄a大片一 | 草草在线视频 | 国产精品久久国产精品99 | 91短视频在线播放 | 亚洲国产精品久久久久久网站 | 亚洲精品乱码久久久久久蜜桃欧美 | 久久免费看少妇高潮A片2012 |