自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

Controller接口地址還能這樣玩?

開發(fā) 前端
Controller映射地址允許通過正則表達(dá)式URL匹配,可以捕獲URL中的特定部分,作為參數(shù)傳遞給Controller方法,從而處理更廣泛的請求類型。

環(huán)境:SpringBoot3.2.5

1. 正則表達(dá)式的路徑

Controller映射地址允許通過正則表達(dá)式URL匹配,可以捕獲URL中的特定部分,作為參數(shù)傳遞給Controller方法,從而處理更廣泛的請求類型。這種方式提高了路由的靈活性和復(fù)用性,使得Web應(yīng)用能夠更精確地響應(yīng)客戶端的請求,每部分的語法格式為:

{varName:regex}

通過上面的正則表達(dá)式聲明 URI 變量。varName方法參數(shù)中的變量名,regex為正則表達(dá)式。如下完整示例:

@GetMapping("/{name:[a-z-]+}-{version:\\d\\.\\d\\.\\d}{ext:\\.[a-z]+}")
public Object p1(@PathVariable String name, @PathVariable String version, @PathVariable String ext) {
  return String.format("%s-%s%s", name, version, ext)  ;
}

其中參數(shù):name:[a-z-]+匹配由任意數(shù)量的小寫字母和/或破折號(hào)"-"組成的字符串,至少需要有一個(gè)這樣的字符。
version:\\d\\.\\d\\.\\d匹配三個(gè)數(shù)字,其中每兩個(gè)數(shù)字之間用一個(gè)點(diǎn)分隔。
ext:\\.[a-z]+匹配一個(gè)點(diǎn)字符后面跟著至少一個(gè)或多個(gè)小寫字母的字符串。

請求示例:

圖片圖片

2. URI路徑占位符

URI 路徑模式還可以嵌入 ${...} 占位符,這些占位符在啟動(dòng)時(shí)通過使用 PropertySourcesPlaceholderConfigurer 針對本地、系統(tǒng)、環(huán)境和其他屬性源進(jìn)行解析。例如,可以使用它根據(jù)某些外部配置對基本 URL 進(jìn)行參數(shù)化,如下示例:

@GetMapping("${pack.uri}")
public Object uri() {
  // TODO
  return "uri" ;
}

在配置文件中定義pack.uri

pack:
  uri: /xxxooo

請求示例

圖片圖片

組合使用

@GetMapping("/api${pack.uri}")
public Object uri()

甚至你還可以使用SpEL表達(dá)式

@GetMapping("/api${pack.uri}/#{1+2}")
public Object uri()

請求示例:

圖片圖片

只要是合法的符合路徑格式的SpEL表達(dá)式都是支持的。

3. 類級(jí)別的路徑參數(shù)

通常通過/{xx}定義的路徑變量一般都是應(yīng)用到具體的請求方法上,其實(shí)你還可以應(yīng)用到類級(jí)別上,如下示例:

@RestController
@RequestMapping("/users/{type}")
public class PathController {
  private static final List<User> DATAS = ... ;
  @GetMapping("/single/{id}")
  public Object p1(@PathVariable Integer type, @PathVariable Long id) {
    return DATAS.stream().filter(u -> type == u.getType() && id == u.getId()).collect(Collectors.toList()) ;
  }
}

該示例在類上接收一個(gè){type}的路徑參數(shù),在方法參數(shù)中可以直接接收。

4. 后綴匹配

從5.3版本開始,Spring MVC默認(rèn)情況下不再對以".*"結(jié)尾的路徑模式進(jìn)行匹配,因此,如果將控制器映射到/person路徑,它也將隱式地映射到/person.*路徑。因此,路徑擴(kuò)展不再用于解釋響應(yīng)請求的內(nèi)容類型(例如,/person.pdf、/person.xml等)。

說明:我們可以通過請求的后綴來確定給客戶端響應(yīng)什么格式的內(nèi)容。而此功能從5.2.4版本開始已經(jīng)被聲明為過時(shí)了,從5.3開始默認(rèn)不再進(jìn)行模式的匹配。在6.0(具體哪個(gè)版本沒有去查證)開始你此項(xiàng)配置直接從配置屬性中刪除,但是你可以通過配置類的方式進(jìn)行配置開啟此功能。接下來進(jìn)行實(shí)例的講解。

由于我使用的SpringBoot版本是3.2.5對應(yīng)的Spring MVC是6.1.6所以配置文件中不能開啟此項(xiàng)功能。

5.3.x版本通過配置開啟

spring:
  mvc:
    contentnegotiation:
      favor-path-extension: true

6.x版本通過配置類開啟

@Component
public static class PathWebMvcConfigurer implements WebMvcConfigurer {


  public void configureContentNegotiation(ContentNegotiationConfigurer configurer) {
    // 開啟路徑后綴功能
    configurer.favorPathExtension(true) ;
  }
}

以上是不同版本開啟根據(jù)路徑后綴響應(yīng)客戶端內(nèi)容類型的方式。接下來進(jìn)行實(shí)例代碼演示如何使用

接口定義

private static final List<User> DATAS = ... ;
@GetMapping("/{id}/fmt.*")
public Object p1(@PathVariable Long id) {
  return DATAS.stream().filter(u -> id == u.getId()).collect(Collectors.toList()) ;
}

這里的路徑通過.*模式進(jìn)行匹配。接下來直接訪問

圖片圖片

這里以json為后綴,相應(yīng)結(jié)果將以json格式放回。如果你希望xml格式,那么你需要引入包

<dependency>
  <groupId>com.fasterxml.jackson.dataformat</groupId>
  <artifactId>jackson-dataformat-xml</artifactId>
</dependency>

上面的包引入后,就不需要做任何配置,容器啟動(dòng)時(shí)會(huì)自動(dòng)的注冊關(guān)于XML的格式轉(zhuǎn)換器。

圖片圖片

你也可以自定義格式內(nèi)容,不過這需要你對HttpMessageConverter比較的了解。

責(zé)任編輯:武曉燕 來源: Spring全家桶實(shí)戰(zhàn)案例源碼
相關(guān)推薦

2024-12-03 09:45:34

2020-11-16 13:38:31

PostMessage

2024-06-13 08:19:08

Controller接口參數(shù)

2021-07-28 06:10:47

拖拽設(shè)計(jì)器 transmat

2021-09-05 07:55:37

前端Emoji 表情

2024-01-30 09:21:29

CSS文字效果文字裝飾

2018-12-12 11:30:54

JavaString字符串

2021-04-09 08:23:30

Css前端加載動(dòng)畫

2023-02-26 00:00:02

字符串分割String

2020-05-22 10:00:08

數(shù)據(jù)庫數(shù)據(jù)庫設(shè)計(jì)軟件設(shè)計(jì)

2021-01-30 07:51:59

微信微信8.0騰訊

2023-01-30 08:46:20

GoGo1兼容性

2022-10-31 08:47:21

人臉識(shí)別按鍵鍵盤

2019-11-08 10:48:07

Windows操作系統(tǒng)微信Windows 10

2021-10-29 07:49:22

Spring事務(wù)管理

2016-09-23 15:36:53

Windows10開始菜單程序

2020-05-09 16:45:56

ping命令Linux

2012-07-13 11:32:16

網(wǎng)絡(luò)出口

2020-09-14 11:26:54

BinlogCanal數(shù)據(jù)庫

2024-10-28 07:10:00

scroll標(biāo)記前端網(wǎng)格布局
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)