簡體   English   中英

API controller 路由屬性問題

[英]API controller route attribute issue

我對 api controller 屬性路由有疑問。 API 接收到一個獲取請求,其中包含到路由的掃描條碼: "api/[controller]/{userId}/{barcodeId}" 條形碼在哪里:0015A765248。

但我們現在有一些采用這種格式的新條碼:BBRT058/639。

我通過調試發現新條形碼中的額外/導致了問題,因為現在無法訪問 API controller。

我認為它正在嘗試達到 controller: "api/[controller]/{userId}/{barcodeId}/{barcodeID}"

哪個不存在。 是否可以修改 API controller 路由屬性以接受包含附加/的barcodeId?

實際上,以任何方式修改新的條形碼樣式都不是我被告知的選項。

我考慮過創建一個新的 controller 來接受新的條形碼:例如"api/[controller]/{userId}/{barcodeIdpart1}/{barcodeIDpart2}" 但我不確定是否創建一個新的 controller 是當前的副本,唯一的區別是路由是一個好主意。 此外,未來可能仍會使用這兩種條形碼格式。

我不相信您需要對您的代碼/控制器進行任何更改,並且它似乎是正確的。 但是,我建議您在對 controller 進行出站呼叫之前更新客戶端以正確編碼 URL 條形碼。 這將確保 controller 正確解析條形碼,然后對其進行進一步處理。 此外,這還將確保將來正確處理任何其他特殊的非 ASCII 字符。

該解決方案並沒有真正改變條形碼格式,而是在進行出站 HTTP 調用以通過線路正確傳輸之前對其進行編碼。 通過破解 controller 的替代解決方案通常會導致非標准的易碎解決方案,因此不推薦使用。

客戶調用URL

  • 當前:api/controllername/userId/BBRT058/639
  • 建議:api/controllername/userId/BBRT058%2F639

進一步閱讀:

我會嘗試用“。”替換“/”。 或者 ”!!” 例如(您可以 select 任何您喜歡的符號或組合) - BBRT058!!639 在發送到 controller 之前並在操作中用“/”替換回來。

barcodeId = barcodeId.Replace("!!", "/");

如果您無法修改條形碼,請嘗試此操作

Route[("api/[controller]/{userId}/{barcodeId}/{barcodeIdpart2?})"]
public IActionResult GetBarcode(int userId, string barcodeId, string barcodeIdpart2 = null)
{

if  (!string.IsNullOrEmpty(barcodeIdpart2)) barcodeId=barcodeId + "/" + barcodeIdpart2;
....

}

它適用於 styles

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM