方式一、使用HttpServletRequest接收请求参数
@GetMapping("/a")
public Object a(HttpServletRequest request) {
Integer id = 0;
if (StrUtil.isNotBlank(request.getParameter("id"))) {
id = Integer.parseInt(request.getParameter("id"));
}
String bookName = request.getParameter("bookName");
String authorName = request.getParameter("authorName");
Book book = new Book();
// 调用set方法设置属性值
return book;
}
调用链接示例:http://localhost:9000/book/a?authorName=老舍&bookName=《骆驼祥子》&id=1。
这种方式,我们每获取一个参数都要调用一次HttpServletRequest的getParameter()方法,而且getParameter()方法的返回值的类型为String类型,如果我们的参数类型不是String还需要手动转换类型。
总体来讲,不推荐这种方式。
方式二、使用@PathVariable接收请求参数
@GetMapping("/{id}/{bookName}/{authorName}")
public Object b(@PathVariable Integer id,
@PathVariable("bookName") String bookName,
@PathVariable("authorName") String authorName) {
log.info("book name: {}", bookName);
log.info("author name: ", authorName);
Book book = new Book();
// 调用set方法设置属性值
return book;
}
调用链接示例:http://localhost:9000/book/1/《骆驼祥子》/老舍。
这种接收请求参数的方式还是比较优雅的。
我们在平时的项目中不怎么用这种方式,个人喜爱吧。
方式三、通过方法参数接收请求参数
@GetMapping("/c")
public Object c(Integer id,
String bookName,
String authorName) {
log.info("id: {}", id);
log.info("book name: {}", bookName);
log.info("author name: ", authorName);
Book book = new Book();
// 调用set方法设置属性值
return book;
}
调用链接示例:http://localhost:9000/book/c?id=1&authorName=老舍&bookName=《骆驼祥子》。
这种方式,我们什么都不用做,只需要方法参数名与URL中的请求参数名保持一致就可以成功接收到参数,URL也是最常见的格式。
我们的项目中接收3个以下的参数时,通常会用这种方式。
方式四、通过自定义对象接收请求参数
@GetMapping("/d")
public Object d(@Valid Book book) {
return book;
}
调用链接示例:http://localhost:9000/book/d?id=1&authorName=老舍&bookName=《骆驼祥子》。
这种方式那是相当简洁。当参数大于3个的时候推荐使用这种方式。而且在自定义对象我们还可以加入一些参数验证,比如NotNull、NotBlank等。
方式一、使用HttpServletRequest接收请求参数
@PostMapping("/e")
public Object e(HttpServletRequest request) {
Integer id = 0;
if (StrUtil.isNotBlank(request.getParameter("id"))) {
id = Integer.parseInt(request.getParameter("id"));
}
String bookName = request.getParameter("bookName");
String authorName = request.getParameter("authorName");
Book book = new Book();
// 调用set方法设置属性值
return book;
}
content-type: multipart/form-data
评价同GET方法接收方式一。
方式二、通过方法参数接收请求参数
@PostMapping("/f")
public Object f(Integer id,
String bookName,
String authorName) {
log.info("id: {}", id);
log.info("book name: {}", bookName);
log.info("author name: ", authorName);
Book book = new Book();
// 调用set方法设置属性值
return book;
}
content-type: multipart/form-data
评价同GET方法接收方式三。
方式三、通过自定义对象接收请求参数
@PostMapping("/g")
public Object g(@Valid Book book) {
return book;
}
content-type: multipart/form-data
评价同GET方法接收方式四。
以上三种方式content-type都是multipart/form-data。
方式四、通过@RequestBody接收请求参数
@PostMapping("/h")
public Object h(@Valid @RequestBody Book book) {
return book;
}
这种方式处理的content-type是application/json。
接收参数的对象封装 —— Book.java
@Data
public class Book {
@NotNull
private Integer id;
@NotBlank
private String bookName;
@NotBlank
private String authorName;
}
留言与评论(共有 0 条评论) “” |