【SpringBoot】http请求注解之Get请求

2019-03-29  本文已影响0人  瑞瑞余之

在介绍Get请求相关注解之前,我认为正确的学习姿势,应该先瞅一眼Get请求的常见格式:

@RestController
@RequestMapping("get_method")
public class GetController {

    @GetMapping(path = "mode_1/{name}/{age}")
    public Map getUrlPathParam(@PathVariable("name") String name, @PathVariable String age) {
        return new HashMap(){{
            put("name", name);
            put("age", age);
        }};
    }

    @GetMapping("mode_2")
    public Map getQueryParam(@RequestParam(name = "name") String name, @RequestParam(defaultValue = "100") String age) {
        return new HashMap(){{
            put("name", name);
            put("age", age);
        }};
    }
}

这时候当你在postman或是浏览器中调用:
localhost:8080/get_method/mode_1/tony/89或是localhost:8080/get_method/mode_2?name=tony&age=89,就可以得到对应的返回值

Get请求返回值
值得一提的是,在第一个方法的形参处由于url中参数名和我定义的方法参数名一致,所以@PathVariable的参数可以省略。需要注意的一点:在以上代码中所有跟协议相关的地方,比如在这里会成为url组成部分的"get_method","mode_1"等自定义参数,我在写的时候都是用的带下划线的小写字母,而不是驼峰形式,这里也是一种编码规范:跟协议有关的自定义变量尽量都用小写的形式(似乎是因为驼峰这种大小写都存在的形式,作为协议接口不友好,可能造成不能处理或是处理方式不一致的情况,所以尽量注意)

说到这里顺便介绍一下查看和理解注解支持的参数,当我们查看某个注解的定义时,以@RequestParam为例:

@Target({ElementType.PARAMETER})
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface RequestParam {
    @AliasFor("name")
    String value() default "";

    @AliasFor("value")
    String name() default "";

    boolean required() default true;

    String defaultValue() default "\n\t\t\n\t\t\n\ue000\ue001\ue002\n\t\t\t\t\n";
}

@Target @Retention @Documented基本是废话,对理解具体注解没有帮助,我就不聊了,注解的成员方法所指代的就是这个注解可以做的些事情,而有的方法上方有@AliasFor则表示在调用该注解时,里面的参数名可以用这个别名当然也可以直接用方法名,就像上面代码示例一样@RequestParam(name = "age")就表示取请求参数中名称为age的参数。我举的这个例子有点意思,大家会发现如果按我的解释,@RequestParam(name = "age")和@RequestParam(value = "age")其实是一个意思,经验证,的确是一样的效果。

上一篇下一篇

猜你喜欢

热点阅读