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}”为传递的参数。

result传参能创几个 restful参数传递_未定义


如果没有传入上述格式的url,则会404。

result传参能创几个 restful参数传递_变量名_02


RestFul风格一个特点就是:同一个url,会根据请求方式的不同回应不同的结果,相当于不同的url。如果请求的方式未定义则也会报上述错误。突发奇想对@RequestMapping中Value的参数名进行了修改,看看是不是会有影响:

result传参能创几个 restful参数传递_参数类型_03


本来以为这只是一个参数名,代表这里有参数,修改也并不会影响结果,没想到竟然出现了问题:

result传参能创几个 restful参数传递_变量名_04


提示:对于方法中int类型的参数a,在URI中没有找到对应的模板变量!所以对于给定的URL模板中的参数名称必须与方法中的参数名对应。思考了,重写修改方法中的变量参数,并且特地调整了一下uri中变量的顺序,看看是否是根据变量名对应,而不是简单的变量顺序自动对应

result传参能创几个 restful参数传递_未定义_05


结果显示猜想是对的,对于value中uri的变量与方法中的变量是根据变量名称对应的!

result传参能创几个 restful参数传递_未定义_06

同时对于通过输入URL传入的参数类型如果无法对应,则同样会报错!

result传参能创几个 restful参数传递_result传参能创几个_07


接下来直接引用秦疆老师的笔记:

方法级别的注解变体有如下几个:组合注解

@GetMapping

@PostMapping

@PutMapping

@DeleteMapping

@PatchMapping

可以利用这些注解直接替代RequestMapping注解中加上method的格式。

result传参能创几个 restful参数传递_springmvc_08


result传参能创几个 restful参数传递_参数类型_09


之后的开发中直接使用以上注解!