SpringMVC中@PathVariable與@PathParam講解

後端如何獲取前端傳的參數

傳統來講,肯定是兩種方式爲主,一種是 GET ,一種是 POST ,這兩種方式都是向一個 URL 傳參 GET 方式體現到了地址欄裏,POST 方式將內容放在了 body 裏

@RequestParam@PathVariable 註解是用於從 request 中接收請求的,兩個都可以接收參數,關鍵點不同的是@RequestParam 是從 request 裏面拿取值,而 @PathVariable 是從一個URI模板裏面來填充


@PathVariable

通過 URI 模板來填充
舉例:

	@RequestMapping(value = "/getbyid/{id}", method = RequestMethod.GET)
	@ResponseBody
	private Map<String, Object> getbyid( HttpServletRequest request,@PathVariable("id") int idnum){
		Map<String, Object> modelMap = new HashMap<String, Object>();
		modelMap.put("idnum", idnum);
		return modelMap;
	}

當我們訪問:

http://localhost:8080/upmovie/movie/getbyid/19

在這裏插入圖片描述

我們可以直接獲取地址裏的19

@PathParam

獲取 request 裏的值

	@RequestMapping(value = "/getbyid", method = RequestMethod.GET)
	@ResponseBody
	private Map<String, Object> getbyid( HttpServletRequest request,@RequestParam(value="id", required=true)int idnum){
		Map<String, Object> modelMap = new HashMap<String, Object>();
		modelMap.put("idnum", idnum);
		return modelMap;
	}

當我們訪問:

http://localhost:8080/upmovie/movie/getbyid?id=21

在這裏插入圖片描述

我們只能獲取 ?id 的值,如果是 POST 方式,我們也可以獲取指定值

優缺點

直接獲取 URI 模板裏的值是很方便的,不用去獲取 request 裏的固定參數,比較直接,藏在 request 裏的使用 POST 方式會優雅一點,如果只是 ID 這種單個或者多個數字字母,使用 @PathVariable 會好很多,這裏借鑑的是 thinkphp5 裏的優點加以利用。

總結

我認爲在單個參數提交 API 獲取信息的時候,直接放在 URL 地址裏,也就是使用 URI 模板的方式是非常方便的,而不使用 @PathVariable 還需要從 request 裏提取指定參數,多一步操作,所以如果提取的是多個參數,而且是多個不同類型的參數,我覺得應該使用其他方式。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章