Spring MVC框架支持RESTful,设计URL时可以使用{自定义名称}的占位符@Get(“/{id:[0-9]+}/delete“)

背景:在开发实践中,如果没有明确的规定URL,可以参考:

  • 传统接口
    获取数据列表,固定接口路径:/数据类型的复数
    • 例如:/albums/select
  • RESTful接口
    - 根据ID获取某条数据:/数据类型的复数/{id} - 例如:/albums/select/{id:[0-9]+}
    - 根据ID对某条数据执行某种操作:/数据类型的复数/{id}/命令,或/数据类型的复数/{id}/数据属性/命令 - 例如:/albums/{id:[0-9]+}/delete

Spring MVC框架很好的支持了RESTful,在设计URL时,可以使用{自定义名称}的占位符表示此处应该是某个参数值,在此请求参数上使用@PathVariable注解,例如:

1.URL占位符设计接口

@PostMapping("/{id}/delete")
public ??? delete(@PathVariable Long id) {
    // 暂不关心方法的实现
}

或者 如果占位符中的名称,和请求参数的名称不一致,需要在@PathVariable注解中配置占位符名称

@PostMapping("/{id}/delete")
public ??? delete(@PathVariable("id") Long albumId) {
    // 暂不关心方法的实现
}
  • 实际效果
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

当设计成以上格式,则客户端提交请求时,占位符位置无论是什么值,都可以匹配上以上设计的路径!注意:如果客户端提交的请求路径中,占位符位置的内容无法被转换成String类型时,将出现400错误。

2.URL正则设计接口

在设计占位符时,可以在占位符名称的右侧、在右大括号的左侧添加1个冒号,并在冒号的右侧可以添加正则表达式,以限制参数值的基本格式,例如:

@PostMapping("/{id:[0-9]+}/delete")
public ??? delete(@PathVariable Long id) {
    // 暂不关心方法的实现
}

如果客户端提交的请求路径中,占位符位置的内容不匹配以上正则表达式时,将出现404错误。
另外,使用了占位符及互斥的正则表达式的配置,是允许共存的,例如:

@Get("/{id:[0-9]+}")
public ??? getStandardById(@PathVariable Long id) {
    // 暂不关心方法的实现
}

@Get("/{name:[a-z]+}")
public ??? getStandardByName(@PathVariable String name) {
    // 暂不关心方法的实现
}

注意: 如果以上两个方法的占位符值都是纯数字的,那么一个url将可以匹配以上2个正则表达式,
则Spring MVC框架无法选取,将出现错误!

3.URL占位符跟传统接口共存,优先使用精准匹配的传统接口

另外不使用占位符的配置,与使用了占位符的配置,是允许共存的,例如:

@Get("/{name:[a-z]+}")
public ??? getStandardByName(@PathVariable String name) {
    // 暂不关心方法的实现
}

@Get("/test")
public ??? testStandardByName(String name) {
    // 暂不关心方法的实现
}

当提交了对应 /test 的请求时,会执行以上第2个方法,即精准匹配的方法,而不会执行使用了占位符的方法。

创造价值,乐哉分享!
一起入门后端 204146007

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

3D小球跑酷

目录 一、前言 二、开发环境 三、场景搭建 1. 创建项目 2. 创建场景内物体 2.1 创建跑道 2.2 创建玩家 2.3 创建障碍物 2.4 改变跑道和障碍物的颜色 2.4.1 创建材质 2.4.2 给跑道和障碍物更换材质 四、功能脚本实现 1. 创建玩家脚本 2. 相机跟随 3. 胜负的判定 3…

DeepLabV3+实现sar影像海面溢油区识别

今天我们分享DeepLabV3的sai影像水体提取。 数据集 本次使用的数据集是Deep-SAR Oil Spill (SOS) dataset。该数据集由中国地质大学的朱祺琪团队制作并共享。该数据集包含墨西哥湾溢油区域和波斯湾溢油区域,分别获取于ALOS 和Sentinel-1A卫星。由ECHO研究组搜集制作…

phpmyadmin4.8.1远程文件包含漏洞 [GWCTF 2019]我有一个数据库1

打开题目 我们用dirsearch扫描一下后台看看 扫描结果如下 我们访问一下robots.txt看看,提示有phpinfo.php 那我们访问一下phpinfo.php 发现没有任何信息后我们转去看看phpmyadmin看看 成功访问到页面 在这里我们看到phpmyadmin的版本号是4.8.1 我们百度搜索一下看…

ABAP与HANA集成 2:ABAP调用HANA存储过程或SQL语句

作者 idan lian 如需转载备注出处 需求 虽然是做BW模块,但是最近项目上种种,都需要给ABAP人员或者前台用户提供能供他们使用的表,就稍微研究了下ABAP和HANA的集成问题,因为我们BW更擅长的还是HANA,而且HANA的运行效…

使用JS来监控前端页面的性能!

说起性能测试, 我们很多时候都在说后端, 前端的性能测试, 我们关注较少. 那我们今天就来讨论一下如何来监控前端的性能.window.performance 是W3C性能小组引入的新的API,目前IE9以上的浏览器都支持。一个performance对象的完整结构如下图所示:memory字段…

【Spark-ML源码解析】Word2Vec

前言 在阅读源码之前,需要了解Spark机器学习Pipline的概念。 相关阅读:SparkMLlib之Pipeline介绍及其应用 这里比较核心的两个概念是:Transformer和Estimator。 Transformer包括特征转换和学习后的模型两种情况,用来将一个DataFr…

FastAdmin 的 icon (图标)文档

FastAdmin 的 icon (图标)文档 FastAdmin的icon使用的是font-awesome,凡是font-awesome的图标均可使用。 点击打开font-awesome的网址 js中的icon填写

自定义maven插件

maven插件简介 一般的maven插件使用时需要引入插件的gav(groupId,artifactId,version)就可以正常使用了。一般的结构如下&#xff1a; 包含插件的gav,还有一组可执行器<execution>。在每个<execution>里面包含有如下结构 一个可执行器的结构如上&#xff0c;其中各…

系统设计架构——互联网案例

Netflix 的技术栈 移动和网络:Netflix 采用 Swift 和 Kotlin 来构建原生移动应用。对于其 Web 应用程序,它使用 React。 前端/服务器通信:Netflix 使用 GraphQL。 后端服务:Netflix 依赖 ZUUL、Eureka、Spring Boot 框架和其他技术。 数据库:Netflix 使用 EV 缓存、Cas…

【线性代数】两个向量组等价,其中一个向量组线性无关,另一个向量组也是线性无关吗?

一、问题 两个向量组等价,其中一个向量组线性无关,另一个向量组也是线性无关吗? 二、答案 不一定,当两个向量组中的向量个数也相同时,结论才成立.若向量个数不相同,结论不成立. 例如&#xff1a; 向量组一&#xff1a;(1,0),(0,1) 向量组二&#xff1a;(1,0),(0,1),(1,1) 两…

超结MOS/低压MOS在5G基站电源上的应用-REASUNOS瑞森半导体

一、前言 5G基站是5G网络的核心设备&#xff0c;实现有线通信网络与无线终端之间的无线信号传输&#xff0c;5G基站主要分为宏基站和小基站。5G基站由于通信设备功耗大&#xff0c;采用由电源插座、交直流配电、防雷器、整流模块和监控模块组成的电气柜。所以顾名思义&#xf…

HarmonyOS应用开发实战—开箱即用的活动创建页面【ArkTS】【鸿蒙专栏-33】

一.HarmonyOS应用开发实战—开箱即用的个人主页页面【ArkTS】【鸿蒙专栏-32】 1.1 项目背景 HarmonyOS(鸿蒙操作系统)是华为公司推出的一种分布式操作系统。它被设计为一种全场景、全连接的操作系统,旨在实现在各种设备之间的无缝协同和共享,包括智能手机、平板电脑、智能…

安防监控EasyCVR平台如何通过api接口设置实时流的sei数据实现画框等操作?

国标GB28181视频监控系统EasyCVR平台采用了开放式的网络结构&#xff0c;支持高清视频的接入和传输、分发&#xff0c;能提供实时远程视频监控、视频录像、录像回放与存储、告警、语音对讲、云台控制、平台级联、磁盘阵列存储、视频集中存储、云存储等丰富的视频能力&#xff0…

【Transformer框架代码实现】

Transformer Transformer框架注意力机制框架导入必要的库Input Embedding / Out EmbeddingPositional EmbeddingTransformer EmbeddingScaleDotProductAttention(self-attention)MultiHeadAttention 多头注意力机制EncoderLayer 编码层Encoder多层编码块&#xff0f;前馈网络层…

mvn 指令报错 环境变量没问题----- jdk版本问题

有一个文件夹&#xff0c;里面mvn指令不能使用。mvn -version都会报错&#xff1a; 使用绝对地址也无法&#xff0c;设置权限也无法&#xff0c;到其上一层文件就可以正常使用。 于是我另外创建了个文件夹&#xff0c;把这个文件夹的所有东西全部复制进去&#xff0c;然后一个…

SpringBoot前后端分离开发项目部署时,项目打包准备工作

第一步&#xff1a;项目打包之前&#xff0c;拉前后端代码 拉完代码后&#xff0c;再执行下面操作&#xff08;确保项目能正常启动并运行&#xff09; 后端&#xff08;执行如下操作&#xff09; mvn clean install -T 8 -Dmaven.test.skiptrue -Dmaven.compile.forktrue 执行…

外汇天眼:在交易中有多少属于你的行情?

期货、股票、外汇不同的市场有着不同的特性&#xff0c;就一个市场而言&#xff0c;也不会是每一段行情都适合你。 新手完全是靠冲动和情绪交易 刚刚进入期货、股票、外汇市场的朋友都会被其巨大的财富效应所震慑&#xff1a;还有这样赚钱的&#xff1f; 而且机会比比皆是&am…

多个描述文件对开发者证书有影响吗

在开发iOS应用程序时&#xff0c;开发者证书是用于签名应用程序的关键工具。这一步骤保证了应用程序的合法性和安全性&#xff0c;避免了恶意篡改和未经授权的访问。那如果有多个描述文件会对开发者证书有影响吗。下面我简单的讲解一下他们之间的关系跟有什么影响。 首先&…

【STM32入门】4.2对射红外传感器计次

1.接线方式 主要是编写传感器的驱动、配合OLED&#xff0c;每遮挡对射红外传感器&#xff0c;OLED屏幕的计数就加一。 2.驱动编写 首先新建.c文件和.h文件&#xff0c;命名为CountSensor 国际惯例&#xff0c;.c文件内要包含stm32.h头文件&#xff0c;然后编写 CountSensor_…

3ds Max渲染贴图丢失?这样操作就能搞定!

当你在使用3ds Max进行渲染时&#xff0c;有时候会遇到贴图丢失的问题&#xff0c;导致模型无法正常显示。这可能是因为你在导入模型或添加贴图时出现了一些错误。不过不用担心&#xff0c;接下来我将向你解释这个问题可能出现的几种原因&#xff0c;同时提供有效的解决方案。 …