RestFul和Controller
从目前的感受到的结果,RestFul风格会使得URL变得简洁,以及安全。因为将参数的具体作用掩盖,不再通过url显示,通过/a/b的这种方式隐式传参。
第一种实现RestFul方式的方法:
@Controller
public class RestFulController {
@RequestMapping(value = "/res01/{a}/{b}",method = RequestMethod.DELETE)
public String resTest01(Model model, @PathVariable int a,@PathVariable int b){
model.addAttribute("msg","a = "+a+", b = "+b);
return "test";
}
}
需要借助**@RequestMapping(value="",method=RequestMethod.*)**,利用value传递具体路径以及需要路径传入的参数。如代码中的"/res01/{a}/{b}"。其中"/res01"为具体的主路径,“{a}”,“{b}”为传递的参数。
如果没有传入上述格式的url,则会404。
RestFul风格一个特点就是:同一个url,会根据请求方式的不同回应不同的结果,相当于不同的url。如果请求的方式未定义则也会报上述错误。突发奇想对@RequestMapping中Value的参数名进行了修改,看看是不是会有影响:
本来以为这只是一个参数名,代表这里有参数,修改也并不会影响结果,没想到竟然出现了问题:
提示:对于方法中int类型的参数a,在URI中没有找到对应的模板变量!所以对于给定的URL模板中的参数名称必须与方法中的参数名对应。思考了,重写修改方法中的变量参数,并且特地调整了一下uri中变量的顺序,看看是否是根据变量名对应,而不是简单的变量顺序自动对应
结果显示猜想是对的,对于value中uri的变量与方法中的变量是根据变量名称对应的!
同时对于通过输入URL传入的参数类型如果无法对应,则同样会报错!
接下来直接引用秦疆老师的笔记:
方法级别的注解变体有如下几个:组合注解
@GetMapping
@PostMapping
@PutMapping
@DeleteMapping
@PatchMapping
可以利用这些注解直接替代RequestMapping注解中加上method的格式。
之后的开发中直接使用以上注解!