SpringBoot基礎使用章節,如何用各種奇妙姿勢接住前端傳過來的值~
獲取參數方式1:獲取XXX/XXX?user=XXX這種方式的參數
// 獲取參數方式1:獲取XXX/XXX?user=XXX這種方式的參數
@RequestMapping("/get")
public void get (@RequestParam(name = "user") String user){
System.out.println("接收到參數:"+user);
return "接收到參數:"+user;
}
獲取參數方式2:獲取路徑參數,RestFull風格入參
// 獲取參數方式2:獲取路徑參數,RestFull風格入參
@GetMapping("/path/{user}")
public String path(@PathVariable(name = "user") String user){
System.out.println("接收到參數:"+user);
return "接收到參數:"+user;
}
獲取參數方式3:post請求JSON數據格式,各參數名與POJO定義的字段一樣
public class Users implements Serializable {
private String name;
private int age;
private Character sex;
@Override
public String toString() {
return "Users{" +
"name='" + name + '\'' +
", age=" + age +
", sex=" + sex +
'}';
}
}
// 獲取參數方式3:post請求JSON數據格式,各參數名與POJO定義的字段一樣
@PostMapping("/post/same")
public String same(@RequestBody Users users){
System.out.println("JSON 接到的:"+users.toString());
return "JSON 接到的:"+users.toString();
}
獲取參數方式4:獲取到請求頭參數(一般權限校驗可以把授權信息身份信息放header傳)
@GetMapping("/heade")
public String heade(@RequestHeader(name = "Content-Type") String contentType, @RequestHeader(name = "Authorization") String authorization){
System.out.println(contentType+"------"+authorization);
return contentType+"------"+authorization;
}
獲取參數方式5:post請求JSON數據格式,各參數名與POJO定義的字段完全不一樣(需要引入fastJson依賴)
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.57</version>
</dependency>
@PostMapping("/fastJson")
public String fastJson(@RequestBody JSONObject param){
System.out.println("JSON :"+param.toJSONString());
return "JSON :"+param.toJSONString();
}
獲取參數方式6:post請求JSON數據格式,各參數名與POJO定義的字段完全不一樣, 通過HttpServletRequest獲取(需要引入fastJson依賴)這種比較麻煩,應該正常使用都不會這樣玩
@PostMapping("/httpServletRequest")
public String httpServletRequest(HttpServletRequest param){
JSONObject jsonParam = null;
try {
// 獲取輸入流
BufferedReader streamReader = new BufferedReader(new InputStreamReader(param.getInputStream(), "UTF-8"));
// 寫入數據到Stringbuilder
StringBuilder sb = new StringBuilder();
String line = null;
while ((line = streamReader.readLine()) != null) {
sb.append(line);
}
jsonParam = JSONObject.parseObject(sb.toString());
// 直接將json信息打印出來
System.out.println("轉換出來的JSON:"+jsonParam.toJSONString());
} catch (Exception e) {
e.printStackTrace();
}
return "轉換出來的JSON:"+jsonParam.toJSONString();
}
獲取參數方式7:get或者post請求,都直接用HttpServletRequest接收
@RequestMapping("/testDemo")
public String testDemo(HttpServletRequest request){
String users = request.getParameter("users");
System.out.println("參數:"+users);
return "參數:"+users;
}
這裏注意一個誤區,就是不一定get請求就只能拼接在URL後,不一定POST請求參數只能放BODY體,其實兩種請求方式並無本質上區別。詳情請看另外一篇博客:get和post的區別誤區
獲取參數方式8:get或者post請求,參數名對應的話可以直接獲取
@RequestMapping("/sameParamName")
public String sameParamName(String users , String id){
System.out.println("users:"+users+"id: "+id);
return "users:"+users+"id: "+id;
}