目录
URL路由和参数处理
URL路由
RESTful URL
前后端分离的设计思想
@RestController 注解
帮助Spring Boot中涉及到web中的URl可以执行路由的规则
@RquestMapping 注解
主要用在方法或者类上,
请求映射,根据传入测参数("/say")映射到hello()方法
在方法上使用
这种方式所有的请求都支持
RquestMapping 注解,在方法上使用
指定请求类型
可以使用api测试工具验证:下载地址:https://www.eolinker.com/pc/
RquestMapping 注解,在类上使用
以上源码
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;
import java.util.HashMap;
import java.util.Map;
/**
* Created by limi on 2017/8/13.
*/
@Controller
//@RestController
@RequestMapping("/api")
public class HelloController {
// @RequestMapping(value = "/say", method = RequestMethod.POST)
@PostMapping("/say")
public String hello() {
return "Hello Spring Boot";
}
@GetMapping("/books")
@ResponseBody
public Object getAll() {
Map<String, Object> map = new HashMap<>();
map.put("name", "hello");
map.put("age", 18);
return map;
}
}
参数处理
获取URL传过来的参数
@PathVariable 注解
控制台打印
传入多个参数,每个参数前面都要加上@PathVariable注解
控制台打印
参数的位置可以放在前面
参数后面可以加上正则表达式
以上源码
@RestController
@RequestMapping("/api/v1")
public class HelloController {
/**
* 正则表达式:{参数名:正则表达式}
* @param id
* @param username
* @return
*/
@GetMapping("/{id}/books/{username:[a-z_]+}")
public Object getOne(@PathVariable long id,@PathVariable String username) {
System.out.println(" --- id: " + id + " username: " + username);
Map<String, Object> book = new HashMap<>();
book.put("name", "互联网世界观");
book.put("isbn", "9877234623432");
book.put("author", "李善友");
book.put("username", username);
return book;
}
}
@RequestParam 注解
获取POST表单的参数
以上源码
@PostMapping("/books")
public Object post(@RequestParam("name") String name,
@RequestParam("author") String author,
@RequestParam("isbn") String isbn) {
Map<String, Object> book = new HashMap<String, Object>();
book.put("name", name);
book.put("author", author);
book.put("isbn", isbn);
return book;
}
每次传1页,一页传10个
以上源码
@GetMapping("/books")
// @ResponseBody
public Object getAll(@RequestParam("page") int page, @RequestParam(value = "size",defaultValue = "10") int size) {
Map<String, Object> book = new HashMap<>();
book.put("name", "互联网世界观");
book.put("isbn", "9877234623432");
book.put("author", "李善友");
Map<String, Object> book2 = new HashMap<>();
book2.put("name", "程序员的思维修炼");
book2.put("isbn", "12312312");
book2.put("author", "auhi");
List<Map> contents = new ArrayList<>();
contents.add(book);
contents.add(book2);
Map<String, Object> pagemap = new HashMap<>();
pagemap.put("page", page);
pagemap.put("size", size);
pagemap.put("content", contents);
return pagemap;
}