SpringBoot2:RESTFUL风格接口开发及源码解读

news2024/11/16 11:38:09

一、RESTFUL简介

Rest风格支持(使用HTTP请求方式,动词来表示对资源的操作)
以前:/getUser 获取用户 /deleteUser 删除用户 /editUser 修改用户 /saveUser 保存用户
现在: /user GET-获取用户 DELETE-删除用户 PUT-修改用户 POST-保存用户

可以简单理解为,请求接口的路径就1个,但是,提交请求时,多了一个参数,从而定位到后端的具体接口。

二、案例

controller接口

    @RequestMapping(value = "/user",method = RequestMethod.GET)
    public String getUser(){
        return "GET-张三";
    }

    @RequestMapping(value = "/user",method = RequestMethod.POST)
    public String saveUser(){
        return "POST-张三";
    }


    @RequestMapping(value = "/user",method = RequestMethod.PUT)
    public String putUser(){
        return "PUT-张三";
    }

    @RequestMapping(value = "/user",method = RequestMethod.DELETE)
    public String deleteUser(){
        return "DELETE-张三";
    }

form表单请求
用法: 对于put、delete、patch类型请求,表单method=post,隐藏域 _method=put

<form action="/user" method="get">
    <input value="REST-GET 提交" type="submit"/>
</form>
<form action="/user" method="post">
    <input value="REST-POST 提交" type="submit"/>
</form>
<form action="/user" method="post">
    <input name="_method" type="hidden" value="delete"/>
    <input value="REST-DELETE 提交" type="submit"/>
</form>
<form action="/user" method="post">
    <input name="_method" type="hidden" value="PUT"/>
    <input value="REST-PUT 提交" type="submit"/>
</form>

yml开启配置

spring:
  mvc:
    hiddenmethod:
      filter:
        enabled: true

三、源码解读

对于web form表单请求,都归WebMvcAutoConfiguration管理
具体位置:
org.springframework.boot.autoconfigure.web.servlet.WebMvcAutoConfiguration#hiddenHttpMethodFilter
在这里插入图片描述
org.springframework.web.filter.HiddenHttpMethodFilter#doFilterInternal
主要处理逻辑代码
在这里插入图片描述
代码解释:
put、delete、patch必须以post form表单的影藏参数传到后端,才能正常处理。
this.methodParam
在这里插入图片描述
ALLOWED_METHODS
在这里插入图片描述

四、扩展

我们注意到this.methodParam变量
在这里插入图片描述
它提供了对应的set方法,所以,我们可以修改这个值,来将影藏参数改成自己喜欢的样子。

此时,需要借助配置类,向IOC容器中,注册一个HiddenHttpMethodFilter,并set我们自定义的值。
来覆盖springboot自定义的Bean实例

    @Bean
    public HiddenHttpMethodFilter hiddenHttpMethodFilter(){
        HiddenHttpMethodFilter methodFilter = new HiddenHttpMethodFilter();
        methodFilter.setMethodParam("_hiddenParam");
        return methodFilter;
    }

我们注意到,源码的一个判断逻辑
"POST".equals(request.getMethod())
那么,如果form表单提交的method=put、delete、patch是不是就直接放行了呢?
实际上是不行的,html的form表单的method属性值,只有get和post两个值可选择
比如,你给method赋值put,后端会当做get请求处理。

另外,如果我们用Postman客户端工具发送put请求,那么,就可以直接放行。
客户端工具,直接修改了request.getMethod()的值。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2104595.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Hadoop是什么?

Hadoop 是什么 1&#xff09;Hadoop 是一个由 Apache 开发的分布式系统基础架构&#xff1b; 2&#xff09;主要解决&#xff1a;海量数据的存储和海量数据的分析计算问题&#xff1b; 3&#xff09;广义上来说&#xff0c;HADOOP 通常是指——HADOOP 生态圈&#xff1b; H…

福田区专精特新小巨人奖励最高50万元!

深圳市福田先进制造业-专精特新企业认定支持&#xff0c;对小巨人给予最高50万元补贴。下面深科信整理项目完整申报条件如下&#xff1a; 专精特新企业奖励标准 对入选专精特新企业名单的企业&#xff0c;符合以下申请条件的&#xff0c;给予一般不超过50万元支持。同一企业同…

【圣诞营销秘籍】Newsbreak上引爆欧美圣诞饰品电商广告的创意攻略

【圣诞营销秘籍】Newsbreak上引爆欧美圣诞饰品电商广告的创意攻略 随着冬日雪花的悄然飘落&#xff0c;欧美大地迎来了最为温馨浪漫的节日——圣诞节。对于电商行业而言&#xff0c;这不仅是销售旺季的巅峰&#xff0c;更是品牌展示创意与魅力的绝佳时机。Newsbreak&#xff0c…

计算机毕业设计选题推荐-餐饮管理系统-餐厅点餐系统-Java/Python项目实战

✨作者主页&#xff1a;IT研究室✨ 个人简介&#xff1a;曾从事计算机专业培训教学&#xff0c;擅长Java、Python、微信小程序、Golang、安卓Android等项目实战。接项目定制开发、代码讲解、答辩教学、文档编写、降重等。 ☑文末获取源码☑ 精彩专栏推荐⬇⬇⬇ Java项目 Python…

充电桩变压器电容补偿要带电抗器吗

为充电桩变压器配置电容补偿时&#xff0c;是否需要加装电抗器取决于具体的电力环境和负载特性。以下是一些考虑因素&#xff1a; 1、谐波含量 充电桩通常是非线性负载&#xff0c;会产生较多的谐波。如果电力系统中谐波含量较高&#xff0c;直接使用电容补偿可能会导致电容器…

2024年最强图纸加密软件大揭秘!图纸加密软件推荐

在数字化时代&#xff0c;信息安全成为企业发展的重要保障&#xff0c;尤其是对于设计图纸等敏感数据的保护&#xff0c;选择一款可靠的图纸加密软件尤为重要。本文将为您推荐2024年十大图纸加密软件&#xff0c;帮助企业在日常工作中更好地保护知识产权和商业机密。 2024年最强…

《JavaEE进阶》----6.<SpringMVC实践项目:【简易两整数加法计算器】>

本篇博客简单的记录了我的第一个JavaEE实践项目 网页版 简易两整数加法计算器 的前段代码&#xff0c;前端页面&#xff0c;后端代码、及计算结果的展示。 使用了form表单来进行前后端的交互 前端代码&#xff1a; <!DOCTYPE html> <html lang"en"> <…

828华为云征文|使用sysbench对Mysql应用加速测评

文章目录 ❀前言❀测试环境准备❀测试工具选择❀测试工具安装❀mysql配置❀未开启Mysql加速测试❀开启Mysql加速测试❀总结 ❀前言 大家好&#xff0c;我是早九晚十二。 昨天有梳理一篇关于华为云最新推出的云服务器产品Flexus云服务器X。当时有说过&#xff0c;这次的华为云F…

近2千消防题库工程师题库ACCESS\EXCEL数据库

这次获得的一批行业题库&#xff0c;数据库表结构都是一样的&#xff0c;有《近万条电气工程师考试题库》、《1万2千多条电工考试题库》、《5千多道安全生产证考试题库》以及今天的消防工程师题库。 大类记录汇总情况&#xff1a;高级#注#册#消防工程师&#xff08;790&#xf…

如何在算家云搭建OpenSora 1.2(文本生成视频)

一. OpenSora 1.2简介 1. 技术特点 高清视频生成 &#xff1a; OpenSora 1.2 在 720p 高清文生视频质量和生成时长上取得了突破性进展&#xff0c;支持无缝产出任意风格的高质量短片。通过引入视频压缩网络&#xff08;VAE&#xff09;和更优的扩散模型算法&#xff0c;显著…

设置电子签名

设置点赞签名代码 export class Signature {width: number 300height: number 300canvas!: HTMLCanvasElementctx!: CanvasRenderingContext2Dprivate drawing: boolean falsepreTask: string[] []nextTask: string[] []private allTask: { x: number; y: number; color: …

阿里巴巴API在电商中的新应用:商品详情实时获取与解析

阿里巴巴API在电商中的新应用主要体现在商品详情实时获取与解析上&#xff0c;这对于提升电商平台的数据处理能力、用户体验以及运营效率具有重要意义。以下将详细介绍这一应用&#xff0c;并包含具体的代码示例。 一、阿里巴巴商品详情API概述 阿里巴巴商品详情API是阿里巴巴…

监控易赋能行动:打造专业运维监控团队,助力代理商成长

在当今数字化转型的浪潮中&#xff0c;运维监控作为确保业务连续性和稳定性的关键一环&#xff0c;其重要性日益凸显。作为行业领先的运维监控解决方案提供商&#xff0c;监控易深知合作伙伴在市场拓展和服务交付中的核心作用。为此&#xff0c;我们隆重推出“监控易赋能行动”…

山东大学OLED透明展示柜案例:科技赋能,创新展示新体验

随着科技的飞速发展&#xff0c;显示技术也在不断突破传统界限&#xff0c;为各行各业带来了全新的展示体验。山东大学集成攻关大平台展厅近期引入了OLED透明展示柜&#xff0c;这一创新举措不仅提升了展厅的展示效果&#xff0c;还为参观者带来了前所未有的互动体验。 背景介绍…

基于Java+SpringBoot+Vue+MySQL的驾校预约管理系统

作者&#xff1a;计算机学姐 开发技术&#xff1a;SpringBoot、SSM、Vue、MySQL、JSP、ElementUI等&#xff0c;“文末源码”。 专栏推荐&#xff1a;前后端分离项目源码、SpringBoot项目源码、SSM项目源码 系统展示 基于SpringBootVue的驾校预约管理系统【附源码文档】、前后…

tenda路由器登录后台后添加端口映射

实现本地地址通过公网地址访问应用。 前提条件&#xff1a;本地网络为专线并且有公网IP 一、登录路由器后台 二、添加映射的内网地址和外网地址以及端口 三、查看公网IP 四、访问本地应用

VisionMaster二次开发-获取全局变量

GlobalVariableModuleCs.GlobalVariableModuleTool类 &#xff0c;继承自 VmModule &#xff0c;用于操作和管理全局变量 using GlobalVariableModuleCs;// 创建实例 GlobalVariableModuleTool global new GlobalVariableModuleTool(); // 直接调用 GetGlobalVar 方法 int res…

截取pdf中的部分内容,又保证内容不失真,实现方式

文章目录 0.为什么需要截取pdf1.访问网站2.上传你需要截取的pdf文件3.选取区域下载 0.为什么需要截取pdf 如果直接截图工具截图的话&#xff0c;里面的文字和图片内容会出现失真的情况&#xff0c;但是我们希望pdf空白部分的内容不要&#xff0c;这个时候就需要截取pdf工具 1…

From Man vs Machine to Man + Machine

From Man vs. Machine to Man Machine: The Art and AI of Stock Analyses 论文阅读 文章目录 From Man vs. Machine to Man Machine: The Art and AI of Stock Analyses 论文阅读 AbstractConstruction and Performance of the AI AnalystMethodologyThe Performance of Ana…

【数据结构与算法 | 搜索二叉树篇 力扣篇】力扣530

1. 力扣530&#xff1a;二叉搜索树的最小绝对差 1.1 题目&#xff1a; 给你一个二叉搜索树的根节点 root &#xff0c;返回 树中任意两不同节点值之间的最小差值 。 差值是一个正数&#xff0c;其数值等于两值之差的绝对值。 示例 1&#xff1a; 输入&#xff1a;root [4,…