Springboot的POST、GET、PUT、DELETE請求實例


概述
Spring的請求
1 請求地址映射注解
11 RequestMapping的屬性
12 RequestParam
13 RequestBody
14 RequestHeader
概述
上文我們講了Spring Boot + gradle環境搭建,能夠將項目運行起來了。我們繼續往前走,接收一些常見的請求。

1 Spring的請求
前文我們的訪問我們的項目直接就是用的http://localhost:8080/,這里對於具體的項目我們可以加上項目路徑並且設置端口號。在application.properties文件中,

server.port=9090
server.context-path=/retrofitclientserver
1
2
此時訪問我們的項目就要使用http://localhost:9090/retrofitclientserver,端口號可以不指定,則會使用默認的端口號8080,為http://localhost:8080/retrofitclientserver。

1.1 請求地址映射注解
請求地址映射注解可以加在類上,也可以加在方法上,加在類上表示這個類中所有響應請求的方法都是以該地址作為父路徑。

1.1.1 @RequestMapping的屬性
這是一個通用的注解,支持所有的HTTP請求。這里大致講一下常用的屬性。

@AliasFor("path")
String[] value() default {};
@AliasFor("value")
String[] path() default {};
RequestMethod[] method() default {};
1
2
3
4
5
value和path

value和path是都是指請求地址。@RequestMapping("/login")等價於@RequestMapping(path="/login")。

占位符

然后這兩個屬性還支持帶占位符的URL,比如:

@RequestMapping(path = "/{account}", method = RequestMethod.GET)
public String getUser(@PathVariable String account)
1
2
這是參數名跟占位符名字一致的情況,不一致的話就要這樣寫:

@RequestMapping(path = "/{account}/{name}", method = RequestMethod.GET)
public String getUser(@PathVariable("account") String phoneNumber,@PathVariable("name") String userName)
1
2
這樣就把占位符綁定到參數phoneNumber上了。

@PathVariable

這里出現了@PathVariable,@Pathvariable注解可以綁定占位符傳過來的值到方法的參數上。

method
method屬性是指請求的方式。

組合注解(RequestMapping的變形)

@GetMapping = @RequestMapping(method = RequestMethod.GET)
@PostMapping = @RequestMapping(method = RequestMethod.POST)
@PutMapping = @RequestMapping(method = RequestMethod.PUT)
@DeleteMapping = @RequestMapping(method = RequestMethod.DELETE)
組合注解是方法級別的,只能用在方法上,我們的實例基本都用組合注解。

1.1.2 @RequestParam
用法如下:

@PostMapping(value = "login")
public void login(@RequestParam String name, @RequestParam String password) {
System.out.println(name + ":" + password);
}
1
2
3
4
@RequestParam注解可以用來提取名為“name”的String類型的參數,並將之作為輸入參數傳入,這就是SpringMVC的提取和解析請求參數的能力。
我們甚至可以不用這個注解,也能只要傳入參數名和方法的參數名一致,也能匹配:

@PostMapping(value = "login")
public void login(String name, @RequestParam String password) {
System.out.println(name + ":" + password);
}
1
2
3
4
這里的name參數沒有加這個注解,實際上也匹配到了。
如果傳入參數名字和方法參數名字不一致,可以給@RequestParam的屬性賦值:

@PostMapping(value = "login")
public void login(@RequestParam("account") String name, @RequestParam String password) {
System.out.println(name + ":" + password);
}
1
2
3
4
1.1.3 @RequestBody
用法如下:

@PostMapping(path = "register")
public String registerUser(@RequestBody User user) {
return user.toString();
}
1
2
3
4
public class User {
private String name;
private String password;

省略get、set、toString...
}
1
2
3
4
5
6
@RequestBody可以用來解析json字符串(還可以解析xml),並將字符串映射到對應的實體中,實體的字段名和json中的鍵名要對應。

注意提交請求的時候要在請求頭指定content-type為application/json charset=utf-8。

1.1.4 @RequestHeader
@RequestHeader注解用來將請求頭的內容綁定到方法參數上。
用法如下:

@PostMapping(value = "login")
public void login(@RequestHeader("access_token") String accessToken,@RequestParam String name) {
System.out.println("accessToken:" + accessToken);
}
1
2
3
4
頭內容:
---------------------
作者:Jadyli1
來源:CSDN
原文:https://blog.csdn.net/u013005791/article/details/73348206
版權聲明:本文為博主原創文章,轉載請附上博文鏈接!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM