4.2 URL映射

文章介绍了SpringBoot中Web开发的相关概念,包括URL映射的精确匹配和通配符匹配,Method匹配如GET、POST等HTTP方法,以及consumes和produces用于内容类型的验证。此外,还提到了params和header匹配用于特定请求参数和头部的处理。
摘要由CSDN通过智能技术生成

第4章 Web开发

4.1 Web开发简介
4.2 URL映射
4.3 参数传递
4.4 数据验证
4.5 拦截器
4.6 过滤器
4.7 Web配置
4.8 实战:实现优雅的数据返回

4.2 URL映射

4.2.1 URL 路径匹配

1、精确匹配
@RequestMapping 的 value 属性用于匹配 URL 映射,value 支持简单表达式:

    @RequestMapping("/getDataById/{id}")
    public String getDataById(@PathVariable("id") Long id) {
        return "getDataById:" + id;
    }

如果URL中的参数名称与方法中的参数名称一致,则可以简化为:

    @RequestMapping("/getDataById/{id}")
    public String getDataById(@PathVariable Long id) {
        return "getDataById:" + id;
    }

2、通配符匹配
@RequestMapping 支持使用通配符匹配 URL,用于统一映射某些 URL 规则类似的请求。

    @RequestMapping("/getJson/*.json")
    public String getJson() {
        return "get Json data";
    }

上面示例中,当在浏览器请求 /getJson/a.json 或者 /getJson/b.json 时,都会匹配到后台的getJson方法。

@RequestMapping 的通配符匹配非常简单实用,支持 “*”、“?”、“**” 等通配符。使用时需要了解通配符的使用规则,否则容易出错。
通配符匹配规则如下:
(1)符号”*“匹配任意字符,符号”**“匹配任意路径,符号”?“匹配单个字符。
(2)有通配符的优先级低于没有通配符的,比如 /user/add.json 比 /user/*.json 优先匹配。
(3)有”**“通配符的优先级低于有”*“通配符的。    

4.3.2 Method 匹配

HTTP 请求的 Method 有 GET、POST、PUT、DELETE 等方式。

(1)GET:用于获取URL对应的数据
(2)POST:用于提交后天数据
(3)HEAD:类型为GET,不返回消息体,用于返回对应的URL的元信息
(4)PUT:类型为POST,对同一个数据多次进行PUT操作不会导致数据改变
(5)DELETE:删除操作
(6)PATCH:类似于PUT操作,表示信息的局部更新

对于Web应用,GET和POST是经常使用的选项,而对于 RESTful接口,则会使用PUT、DELETE等从语义上进一步区分的操作。

    @RequestMapping(value = "getData", method = RequestMethod.GET)
    public String getData() {
        return "RequestMethod GET";
    }
    
    @RequestMapping(value = "getData", method = RequestMethod.POST)
    public String postData() {
        return "RequestMethod POST";
    }

4.3.3 consumes 和 produces 匹配

@RequestMapping 注解提供了 consumes 和 produces 参数用于验证 HTTP 请求的 内容类型 和 返回类型。
(1)consumes 表示请求的 HTTP 头的 Content-Type 媒体类型与 consumes 的值匹配才可以调用方法。
(2)produces 表示HTTP 请求中的 Accept 字段只有匹配成功才可以调用。

    //处理 request Content-Type 为“application/json”类型的请求
    @RequestMapping(value = "/Content", method = RequestMethod.POST, consumes = "application/json")
    public String Consumes(@RequestBody Map param) {
        return "Consumes POST Content-Type=application/json";
    }

4.3.4 params 和 header 匹配

1、params

(1)params={“username”}, 存在“username”参数时通过。
(2)params={“!password”}, 不存在”password“参数时通过。
(3)params={“age=20”},参数age等于20时通过。

    @RequestMapping(value = "paramsTest", params = "action=save")
    public String paramsTest(@RequestBody Map param) {
        return "params test";
    }

备注:@RequestBody注解,则调用时需要添加请求体Body为{},同时添加请求头:Content-Type=application/json。

2、header

header 的使用和 params 类似,它检查 HTTP 的 header 头中是否有 Host=localhost:8080 的参数,如果有则匹配此方法。

    @RequestMapping(value = "headerTest", headers = {"Host=localhost:8080"})
    public String headerTest() {
        return "header test";
    }

来源:《Spring Boot 从入门到实战》学习笔记

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值