第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

在某些情況下,asp.net 核心 webapi 路由約束正則表達(dá)式似乎被忽略了

在某些情況下,asp.net 核心 webapi 路由約束正則表達(dá)式似乎被忽略了

C#
慕哥9229398 2022-10-15 15:05:59
此應(yīng)用程序基于 ASP.Net Core (.NET Core 2.1) 構(gòu)建。我正在嘗試配置一個(gè)控制器(見(jiàn)RiskController下文)以通過(guò) http get 支持以下內(nèi)容:按 ID ( /api/risk/0000001) 獲取應(yīng)返回單個(gè)風(fēng)險(xiǎn)圖按名稱(chēng)查找 ( /api/risk/some%20company%20name) 應(yīng)返回搜索結(jié)果數(shù)組/api/risk/0000002/validate如果 id 存在,驗(yàn)證 ID ( ) 應(yīng)返回真/假非常簡(jiǎn)單的東西,當(dāng)參數(shù)值非常適合每個(gè)動(dòng)作時(shí),這一切都有效。我正在使用正則表達(dá)式來(lái)限制動(dòng)作,這很有幫助。我的控制器聲明:    [Produces( "application/json" )]    [Route( "api/[controller]" )]    [Authorize]    [ApiController]    public class RiskController : ControllerBase通過(guò) ID 操作獲取:        // GET api/risk/0000001        [HttpGet( "{riskId:regex(^\\d{{7}}|(SI[[PG]]|JPA|DEM)\\d{{4}})}", Order = 0 )]        public async Task<IActionResult> Get( string riskId ) { ... }按名稱(chēng)查找操作:        // GET api/risk/some%20company%20name        [HttpGet( "{name:length(2,30)}", Order = 1 )]        public async Task<IActionResult> Search( string name ) { ... }驗(yàn)證 ID 操作:        // GET api/risk/0000001/validate        [HttpGet( "{riskId:regex(^\\d{{7}}|(SI[[PG]]|JPA|DEM)\\d{{4}})}/[action]", Order = 2 )]        public async Task<IActionResult> Validate( string riskId )ID 始終為 7 位字符串,或以 SIP、SIG、JPA 或 DEM 開(kāi)頭,后跟 4 位數(shù)字(例如:“0000002”、“SIP0003”、“SIG0004”、“JPA0005”或“DEM0006”之一)?,F(xiàn)在讓我感到困惑的是當(dāng)用戶(hù)輸入時(shí),在按名稱(chēng)搜索字段中輸入一個(gè)九位數(shù)字。按名稱(chēng)搜索應(yīng)使用/api/risk/000000019. 這應(yīng)該由上面的find by name action來(lái)處理。但是,由于某種原因,上述get by ID 操作的約束正則表達(dá)式與九位數(shù)字匹配,這當(dāng)然找不到條目。并且用戶(hù)看到一個(gè)錯(cuò)誤。但是,如果用戶(hù)在“按名稱(chēng)搜索”字段中輸入一個(gè)四位數(shù)字,則調(diào)用會(huì)/api/risk/0004與上述按名稱(chēng)搜索操作相匹配并按其應(yīng)有的方式工作。對(duì)通過(guò) ID 操作正則表達(dá)式獲取\d{7}的約束部分不應(yīng)該完全匹配 7 位數(shù)字并且不再匹配嗎?當(dāng)然不匹配正則表達(dá)式的后半部分:!/api/risk/000000019(SI[PG]|JPA|DEM)\d{4}有什么建議嗎?
查看完整描述

1 回答

?
白豬掌柜的

TA貢獻(xiàn)1893條經(jīng)驗(yàn) 獲得超10個(gè)贊

這里的正則表達(dá)式:

 // GET api/risk/0000001
 [HttpGet( "{riskId:regex(^\\d{{7}}|(SI[[PG]]|JPA|DEM)\\d{{4}})}", Order = 0 )]

僅檢查它是否“以”表達(dá)式開(kāi)頭,考慮添加對(duì)字符串結(jié)尾的檢查??紤]以下簡(jiǎn)化正則表達(dá)式之間的區(qū)別:

  1. ^\d{7}

  2. ^\d{7}$

注意1將匹配0000001,00000012340000001ABC。

雖然您可能在2which 之后匹配0000001


查看完整回答
反對(duì) 回復(fù) 2022-10-15
  • 1 回答
  • 0 關(guān)注
  • 165 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢(xún)優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)