SpringBoot-Rest风格URL地址

本文介绍了RESTful架构在SpringBoot中的应用,详细讲解了如何通过配置实现GET、POST、PUT、DELETE操作,并展示了表单提交和底层原理,包括_hidden_method参数和HiddenHttpMethodFilter的作用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1:Rest介绍

REST:Representational State Transfer,表现层资源状态转移。
具体说,就是 HTTP 协议里面,四个表示操作方式的动词:GET、POST、PUT、DELETE。
它们分别对应四种基本操作:GET 用来获取资源,POST 用来新建资源,PUT 用来更新资源,DELETE 用来删除资源。
REST 风格提倡 URL 地址使用统一的风格设计,从前到后各个单词使用斜杠分开,不使用问号键值对方式携带请求参数,而是将要发送给服务器的数据作为 URL 地址的一部分,以保证整体风格的一致性。

操作传统方式REST风格
查询操作getUserById?id=1user/1–>get请求方式
保存操作saveUseruser–>post请求方式
删除操作deleteUser?id=1user/1–>delete请求方式
更新操作updateUseruser–>put请求方式

2:SpringBoot开启Rest

在application.yaml配置:

spring.mvc.hiddenmethod.filter.enabled=true

表单提交:

<a th:href="@{/user/1}">查询用户</a>
        <br/>
        
        <form th:action="@{/user}" method="post">
            userId:<input type="text" name="userId">
            userName:<input type="text" name="userName">
            <input type="submit" th:value="添加用户">
        </form>
        <br/>
        
        <form th:action="@{/user/1}" method="post">
            <input type="hidden" name="_method" th:value="Delete">
            <input type="submit" th:value="删除用户">
        </form>
        <br/>
        
        <form th:action="@{/user}" method="post">
            <input type="hidden" name="_method" th:value="Put">
            userName:<input type="text" name="userName">
            <input type="submit" name="修改用户">
        </form>

控制层:

@org.springframework.web.bind.annotation.RestController
public class RestController {

    @GetMapping("/user/{userId}")
    public String getRest(@PathVariable(value = "userId",required = false)Integer userId){
            return "这是Get请求,查询的userId为"+userId;
    }

    @PostMapping("/user")
    public String postRest(@RequestParam("userId") Integer userId, @RequestParam("userName")String userName){
        return "这是Post请求,保存的userId为"+userId+",userName为"+userName;
    }

    @DeleteMapping("/user/{userId}")
    public String deleteRest(@PathVariable(value = "userId",required = false)Integer userId){
        return "这是Delete请求,删除的userId为"+userId;
    }

    @PutMapping("/user")
    public String putRest( @RequestParam("userName")String userName){
        return "这是Put请求,修改的userName为"+userName;
    }

}

3:底层原理

1:表单提交的过程中会携带_method参数
2:请求过来会被 HiddenHttpMethodFilter拦截
3:当请求正确,且为post请求,则_method的value值会被获取
4:原生post请求会通过包装模式,重写getMethod方法,getMethod的返回值就是传入的_method的value
5:HiddenHttpMethodFilter需要放到整个过滤链最前面

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值