最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

springboot RESTful以及參數(shù)注解的使用方式

 更新時(shí)間:2021年10月19日 11:44:13   作者:ZeusLuna  
這篇文章主要介紹了springboot RESTful以及參數(shù)注解的使用方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

springboot RESTful及參數(shù)注解使用

RESTful

Spring的復(fù)雜性不是來(lái)自于它處理的對(duì)象,而是來(lái)自于自身,不斷演進(jìn)發(fā)展的Spring會(huì)帶來(lái)時(shí)間維度上復(fù)雜性,比如SpringMVC以前版本的@RequestMapping,到了新版本被下面新注釋替代,相當(dāng)于增加的選項(xiàng):

@GetMapping
@PostMapping
@PutMapping
@DeleteMapping
@PatchMapping

說(shuō)明

1、@GetMapping

@RequestMapping(method = RequestMethod.GET)的簡(jiǎn)寫(xiě)

作用:對(duì)應(yīng)查詢,表明是一個(gè)查詢URL映射

2、@PostMapping

@RequestMapping(method = RequestMethod.POST)的簡(jiǎn)寫(xiě)

作用:對(duì)應(yīng)增加,表明是一個(gè)增加URL映射

3、@PutMapping

@RequestMapping(method = RequestMethod.PUT)的簡(jiǎn)寫(xiě)

作用:對(duì)應(yīng)更新,表明是一個(gè)更新URL映射

4、@DeleteMapping

@RequestMapping(method = RequestMethod.DELETE)的簡(jiǎn)寫(xiě)

作用:對(duì)應(yīng)刪除,表明是一個(gè)刪除URL映射

5、@PatchMapping

Patch方式是對(duì)put方式的一種補(bǔ)充;

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

參數(shù)注解的使用

@PathVariable
@RequestParam
@RequestBody
@ModelAttribute

說(shuō)明

1. @PathVariable

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

@PathVariable綁定URI模板變量值

@PathVariable是用來(lái)獲得請(qǐng)求url中的動(dòng)態(tài)參數(shù)的

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

2.@RequestParam

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

@RequestParam注解主要有哪些參數(shù):

  • value:參數(shù)名字,即入?yún)⒌恼?qǐng)求參數(shù)名字,如username表示請(qǐng)求的參數(shù)區(qū)中的名字為username的參數(shù)的值將傳入;
  • required:是否必須,默認(rèn)是true,表示請(qǐng)求中一定要有相應(yīng)的參數(shù),否則將報(bào)404錯(cuò)誤碼;
  • defaultValue:默認(rèn)值,表示如果請(qǐng)求中沒(méi)有同名參數(shù)時(shí)的默認(rèn)值,例如:
public List getItemTreeNode(@RequestParam(value=“id”,defaultValue=“0”)long parentId)

3.@RequestBody

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

通過(guò)@requestBody可以將請(qǐng)求體中的JSON字符串綁定到相應(yīng)的bean上,當(dāng)然,也可以將其分別綁定到對(duì)應(yīng)的字符串上。

4.@ModelAttribute

在使用RESTful風(fēng)格時(shí),使用get請(qǐng)求,又想使用對(duì)象接收參數(shù),就可以使用這個(gè)注解

不光適用于get請(qǐng)求,同樣也適用于put和delete請(qǐng)求

springboot Restful使用記錄

創(chuàng)建項(xiàng)目

通過(guò)spring官網(wǎng)創(chuàng)建項(xiàng)目

https://start.spring.io/

在這里插入圖片描述

  • 項(xiàng)目名稱取為studyRest
  • 項(xiàng)目依賴WEB

Rest組件使用

使用@RestController標(biāo)記類(lèi)為提供Restful服務(wù)的Contoller

@GetMapping為資源定位一部分,也就是url,對(duì)應(yīng)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;
	}
}

測(cè)試(這里使用瀏覽器測(cè)試,后續(xù)使用Postman工具)

在這里插入圖片描述

@GetMapping關(guān)鍵字對(duì)應(yīng)GET請(qǐng)求,也就是查詢,請(qǐng)求還可以有參數(shù),對(duì)應(yīng)@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;
	}

測(cè)試,返回值為入?yún)魅雲(yún)?shù)

在這里插入圖片描述

Post類(lèi)型,新增操作

新增使用@PostMapping描述URL

新增一般都會(huì)帶有大量數(shù)據(jù),一般都是使用@RequestBody注解封裝參數(shù)

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

測(cè)試

在這里插入圖片描述

注意兩點(diǎn),不正確都會(huì)報(bào)錯(cuò)

  • 請(qǐng)求類(lèi)型必須是POST
  • Content-type必須要設(shè)置為application/json,因?yàn)槿雲(yún)⑿问綖镴SON格式

在這里插入圖片描述

更新與刪除操作

使用上與Post一致,只是不同類(lèi)型需要使用對(duì)應(yīng)的主機(jī)

  • 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是一個(gè)通用注解,包含上述所有操作

@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

其中可以屬于請(qǐng)求參數(shù)和響應(yīng)數(shù)據(jù)類(lèi)型

@RequestMapping(value = "/parent", consumes = MediaType.APPLICATION_JSON_VALUE, produces = MediaType.APPLICATION_JSON_VALUE)

其中consumes 約束入?yún)㈩?lèi)型,produces 約束響應(yīng)數(shù)據(jù)類(lèi)型

測(cè)試Content-Type:text/plain報(bào)錯(cuò),由于設(shè)置了JSON格式

在這里插入圖片描述

支持哪些格式參考Media定義

org.springframework.http.MediaType

XML格式數(shù)據(jù)支持

這里擴(kuò)展一下,返回XML格式數(shù)據(jù)

引入XML依賴包

	<dependency>
		<groupId>com.fasterxml.jackson.dataformat</groupId>
		<artifactId>jackson-dataformat-xml</artifactId>
	</dependency>

測(cè)試類(lèi)

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

測(cè)試

在這里插入圖片描述

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • 使用Java構(gòu)造和解析Json數(shù)據(jù)的兩種方法(詳解二)

    使用Java構(gòu)造和解析Json數(shù)據(jù)的兩種方法(詳解二)

    這篇文章主要介紹了使用Java構(gòu)造和解析Json數(shù)據(jù)的兩種方法(詳解二)的相關(guān)資料,需要的朋友可以參考下
    2016-03-03
  • Java控制臺(tái)版五子棋的簡(jiǎn)單實(shí)現(xiàn)方法

    Java控制臺(tái)版五子棋的簡(jiǎn)單實(shí)現(xiàn)方法

    這篇文章主要給大家介紹了關(guān)于Java控制臺(tái)版五子棋的簡(jiǎn)單實(shí)現(xiàn)方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-01-01
  • Java的MD5工具類(lèi)和客戶端測(cè)試類(lèi)

    Java的MD5工具類(lèi)和客戶端測(cè)試類(lèi)

    這篇文章主要介紹了Java的MD5工具類(lèi)和客戶端測(cè)試類(lèi),小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2021-12-12
  • 解決SpringBoot中的Scheduled單線程執(zhí)行問(wèn)題

    解決SpringBoot中的Scheduled單線程執(zhí)行問(wèn)題

    在一次SpringBoot中使用Scheduled定時(shí)任務(wù)時(shí),發(fā)現(xiàn)某一個(gè)任務(wù)出現(xiàn)執(zhí)行占用大量資源,會(huì)導(dǎo)致其他任務(wù)也執(zhí)行失敗,這篇文章主要介紹了SpringBoot中的Scheduled單線程執(zhí)行問(wèn)題及解決方法,需要的朋友可以參考下
    2022-06-06
  • SpringCloud Zuul網(wǎng)關(guān)功能實(shí)現(xiàn)解析

    SpringCloud Zuul網(wǎng)關(guān)功能實(shí)現(xiàn)解析

    這篇文章主要介紹了SpringCloud Zuul網(wǎng)關(guān)功能實(shí)現(xiàn)解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-03-03
  • Springboot日志開(kāi)啟SLF4J過(guò)程解析

    Springboot日志開(kāi)啟SLF4J過(guò)程解析

    這篇文章主要介紹了Springboot日志開(kāi)啟SLF4J過(guò)程解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-05-05
  • java將String字符串轉(zhuǎn)換為L(zhǎng)ist<Long>類(lèi)型實(shí)例方法

    java將String字符串轉(zhuǎn)換為L(zhǎng)ist<Long>類(lèi)型實(shí)例方法

    在本篇文章里小編給大家整理的是關(guān)于java將String字符串轉(zhuǎn)換為L(zhǎng)ist<Long>類(lèi)型實(shí)例方法,需要的朋友們可以參考下。
    2020-03-03
  • Java?Runnable和Thread實(shí)現(xiàn)多線程哪個(gè)更好你知道嗎

    Java?Runnable和Thread實(shí)現(xiàn)多線程哪個(gè)更好你知道嗎

    這篇文章主要為大家詳細(xì)介紹了Java?Runnable和Thread實(shí)現(xiàn)多線程哪個(gè)更好,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來(lái)幫助<BR>
    2022-03-03
  • Java設(shè)計(jì)模式之迪米特原則精解

    Java設(shè)計(jì)模式之迪米特原則精解

    設(shè)計(jì)模式(Design pattern)代表了最佳的實(shí)踐,通常被有經(jīng)驗(yàn)的面向?qū)ο蟮能浖_(kāi)發(fā)人員所采用。設(shè)計(jì)模式是軟件開(kāi)發(fā)人員在軟件開(kāi)發(fā)過(guò)程中面臨的一般問(wèn)題的解決方案。本篇介紹設(shè)計(jì)模式七大原則之一的迪米特原則
    2022-02-02
  • Java實(shí)現(xiàn)貪吃蛇大作戰(zhàn)小游戲的示例代碼

    Java實(shí)現(xiàn)貪吃蛇大作戰(zhàn)小游戲的示例代碼

    本文主要介紹了Java實(shí)現(xiàn)貪吃蛇大作戰(zhàn)小游戲的示例代碼,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2022-07-07

最新評(píng)論

思南县| 三原县| 宁明县| 瑞安市| 遂昌县| 札达县| 福海县| 井研县| 湘潭县| 图木舒克市| 平湖市| 镇原县| 临澧县| 平湖市| 曲阳县| 华蓥市| 平湖市| 梧州市| 调兵山市| 巴楚县| 额尔古纳市| 安多县| 平罗县| 定结县| 龙胜| 贵溪市| 宁波市| 荆门市| 鄱阳县| 蓝山县| 福建省| 洛宁县| 拜城县| 定边县| 大名县| 平原县| 望奎县| 文成县| 宁都县| 蓬溪县| 广州市|