04.springMVC获得请求参数1

151 阅读2分钟

路径参数

获得路径中的参数值,采用@PathVariable来指定。此种方式也称为RESTful风格的url。

@Controller
public class PathController {
    @RequestMapping("/path/variable/{userid}/{username}")
    public String pathVariable(@PathVariable("userid") Integer userid,
                               @PathVariable(value = "username") String username) {
        System.out.println("userid:" + userid);
        System.out.println("username:" + username);
        return "first";
    }
}

注意:

  • 这里如果在path中定义的名字和接受的参数名称一致的话,可以把@PathVariable("userid")省略为、

    @PathVariable

  • 如果@PathVariable(value="username", required = false)也就是路径中可以不传值的话,默认是不起作用的可以通过映射多个路径变相解决这个问题:

    @RequestMapping(value={"/path/variable/{userid}/{username}","/path/variable/{userid}"})

了解RESTful

  • REST(Representational State Transfer,简称REST)

    英文翻译过来叫:“表述性状态转移”,听着很高大尚的样子,其实简单理解一种软件架构风格

  • RESTful

    REST 指的是一组架构约束条件和原则。满足这些约束条件和原则的应用程序或设计就是 RESTful

解释REST

上面REST中说到的“表述性状态转移”,说人话就是:http协议中请求方式GET、POST、PUT、DELETE对应四种基本操作。

请求方式对应的操作
GET获取资源。比如:通过id获得用户信息
POST新建资源。比如:传一个user的POJO对象,新建用户信息。
PUT更新资源。比如:传一个user的POJO对象,通过用户id更新用户信息。
DELETE删除资源。比如:通过id删除用户信息

在访问同一个url的时候,通过不同的请求方式,对应到Controller中不同的处理方法。

RESTful示例

1. Controller代码

@RequestMapping(value = "testRest/{id}", method = RequestMethod.GET)
@ResponseBody
public String testRestGet(@PathVariable String id) {
    return "test rest GET :" + id;
}
​
@RequestMapping(value = "testRest/{id}", method = RequestMethod.POST)
@ResponseBody
public String testRestPost(@PathVariable String id) {
    return "test rest POST :" + id;
}
​
@RequestMapping(value = "testRest/{id}", method = RequestMethod.PUT)
@ResponseBody
public String testRestPut(@PathVariable String id) {
    return "test rest PUT :" + id;
}
​
@RequestMapping(value = "testRest/{id}", method = RequestMethod.DELETE)
@ResponseBody
public String testRestDelete(@PathVariable String id) {
    return "test rest DELETE :" + id;
}

这里@ResponseBody理解为直接返回字符串,而不是返回一个页面

2. 采用postman进行测试

image-20230327101435228

image-20230327101912382

image-20230327102005887

image-20230327102057356

3. 代码地址

gitee.com/mayuanfei/s…下的springmvc02

. RESTful思考

通过上面的postman测试后发现,请求的路径其实是没有变化的。仅仅通过不同的请求方式就能映射到不同的方法中去。这一切看起来很美好,but,对于接口使用者来说,并不能达到见名识其意的作用。所以是不是用,怎么用这个RESTful可能还会结合具体的场景给出接口定义。

记忆印记

  • 通过@PathVariable来获得url路径中的参数
  • REST是一种软件架构风格
  • 满足REST约束条件和原则的应用程序或设计就是 RESTful
  • 在Controller中通过制定method来把不同的请求方式映射到方法上