目錄
一:四種傳參方式
1.1:在 URL 中傳遞參數(shù)
1.2:PathVariable 傳遞參數(shù)(Restful 風(fēng)格)
1.3:在請(qǐng)求體中傳遞參數(shù)
1.4:在請(qǐng)求頭中傳遞參數(shù)
?二:文件上傳接口測(cè)試
?2.1 : test.java
?三、@RequestParam
3.1 多個(gè)參數(shù)
?3.2 單個(gè)參數(shù)
?四、@PathVariable
4.1? 單個(gè)參數(shù)
?4.2? 多個(gè)參數(shù)
五、@RequestBody
5.1? 單個(gè)參數(shù)
?5.2? User對(duì)象
?5.3? Map對(duì)象?
?編輯
?5.4? List 集合
六:RequestHeader
七、HttpServletRequest
補(bǔ)充:
8: JSONObject 類(lèi)型
9:使用@ModelAttribute注解
一:四種傳參方式
SpringBoot 接收參數(shù)的常用方式主要有以下幾種:
1.1:在 URL 中傳遞參數(shù)
??????? 可以通過(guò)在 URL 中添加參數(shù)來(lái)傳遞數(shù)據(jù),例如:
/user?id=123&name=Tom
。在 SpringBoot 中,可以使用@RequestParam
注解來(lái)獲取請(qǐng)求參數(shù)。
1.2:PathVariable 傳遞參數(shù)(Restful 風(fēng)格)
?????? PathVariable 可以接受 URL 中的變量值,例如:
/user/123
,其中 123 就是一個(gè)變量。在 SpringBoot 中,可以使用@PathVariable
注解來(lái)獲取 URL 中的變量值。
?
1.3:在請(qǐng)求體中傳遞參數(shù)
????? 可以將參數(shù)放在請(qǐng)求體中傳遞,例如:POST 請(qǐng)求中的表單數(shù)據(jù)或 JSON 數(shù)據(jù)。在 SpringBoot 中,可以使用
@RequestBody
注解來(lái)獲取請(qǐng)求體中的參數(shù)。
1.4:在請(qǐng)求頭中傳遞參數(shù)
????? 可以在請(qǐng)求頭中添加參數(shù),例如:JWT Token。在 SpringBoot 中,可以使用
@RequestHeader
注解來(lái)獲取請(qǐng)求頭中的參數(shù)。
?二:文件上傳接口測(cè)試
?2.1 : test.java
@PostMapping("/test10")
public Result test10(@RequestParam("file") MultipartFile file) {
return Result.ok(200);
}
?三、@RequestParam
3.1 多個(gè)參數(shù)
@GetMapping("/test3")
public Result test3(@RequestParam("id") Integer id ,
@RequestParam("name") String name){
return Result.ok(name+id);
}
執(zhí)行結(jié)果:
?3.2 單個(gè)參數(shù)
@PostMapping("/test4")
public Result test4(@RequestParam("name") String name) {
return Result.ok(name);
}
執(zhí)行結(jié)果:
?四、@PathVariable
?? @PathVariable
用于綁定 url 中的占位符。例如:請(qǐng)求 url 中 /delete/{id}
,這個(gè){id}
就是 url 占位符。url 支持占位符是 spring3.0 之后加入的。是 springmvc 支持 rest 風(fēng)格 URL 的一個(gè)重要標(biāo)志。
4.1? 單個(gè)參數(shù)
@PostMapping("/test2/{id}")
public Result test2(@PathVariable("id") Integer id) {
return Result.ok(id);
}
?4.2? 多個(gè)參數(shù)
@GetMapping("/test1/{id}/{name}")
public Result test1(@PathVariable("id") Integer id,
@PathVariable("name") String name) {
return Result.ok(id+":"+name);
}
五、@RequestBody
???????? @RequestBody一般被用來(lái)接收http請(qǐng)求中body中json數(shù)據(jù)。get、post都可以使用。一般用于post。
5.1? 單個(gè)參數(shù)
注意:不支持 (@RequestBody String name 2,@RequestBody String name2)
@PostMapping("/test5")
public Result test5(@RequestBody String name) {
return Result.ok(name);
}
不同傳參得到的結(jié)果不同:
" 李四 "
JSON格式:
{
"name": "李四"
}
?5.2? User對(duì)象
@PostMapping("/test6")
public Result test6(@RequestBody User user) {
return Result.ok(user);
}
?結(jié)果:
?5.3? Map對(duì)象?
@PostMapping("/test7")
public Result test7(@RequestBody HashMap map) {
return Result.ok(map);
}
結(jié)果:
?5.4? List 集合
@PostMapping("/test8")
public Result test8(@RequestBody List<User> list) {
return Result.ok(list);
}
結(jié)果:
六:RequestHeader
??????? @RequestHeader主要用來(lái)獲取請(qǐng)求當(dāng)中的請(qǐng)求頭
代碼示例:
@PostMapping("/test9")
public Result test9(@RequestHeader("token") String token ) {
return Result.ok(token);
}
結(jié)果:
七、HttpServletRequest
??????? 直接拿到request對(duì)象,通過(guò)request可以從對(duì)象中靈活的獲取參數(shù):
@RestController
@RequestMapping("/request")
public class HttpServletRequestController {
@GetMapping("/getUrlValue")
public String getUrlValue(HttpServletRequest request) {
// 沒(méi)有的時(shí)候不會(huì)報(bào)錯(cuò),直接為null
String msg = request.getParameter("msg");
System.out.println(msg);
return msg;
}
@GetMapping("/getUrlValues")
public String getHttpServletRequestValue(HttpServletRequest request) {
Map<String, String[]> parameterMap = request.getParameterMap();
return JSONObject.toJSONString(request.getParameterMap());;
}
}
補(bǔ)充:
8: JSONObject 類(lèi)型
@GetMapping(value = "/queryTest")
@AnonymityAnnotation(access = true)
public WebResponse<JSONObject> queryAuthUsers(@RequestBody JSONObject jsonObject){
JSONObject js = jsonObject;
return new WebResponse<JSONObject>().success(js);
}
參數(shù):
{
"propertyName": "someValue"
}
打印結(jié)果:
{
"meta": {
"success": true,
"statusCode": 200,
"message": "ok"
},
"data": {
"propertyName": "someValue"
}
}
9:使用@ModelAttribute注解
@GetMapping(value = "/queryTest2")
@AnonymityAnnotation(access = true)
public WebResponse<testPO> queryAuthUsers2(@ModelAttribute testPO dto){
testPO dto1 = dto;
return new WebResponse<testPO>().success(dto1);
}
傳參:文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-450730.html
文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-450730.html
到了這里,關(guān)于優(yōu)雅地處理參數(shù)傳遞:Spring Boot中的技巧的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!