iT邦幫忙

0

asp.net web api get問題

我要設計一個api可以輸入中文查詢也可以輸入數字查詢兩者查詢的欄位是不同的
範例:
1./api/Values/123456 --->應該要走到我的GetInt
2./api/Values/台積電 --->應該要走到我的GetString

這是我的controller
![https://ithelp.ithome.com.tw/upload/images/20210617/20127159D4jjb35blZ.jpg]
(https://ithelp.ithome.com.tw/upload/images/20210617/20127159D4jjb35blZ.jpg)
這是我的WebApiConfig
https://ithelp.ithome.com.tw/upload/images/20210617/20127159fuDkzhc7Dd.jpg
我不太清楚應該如何處理這部分

1 個回答

2
horace_work
iT邦新手 5 級 ‧ 2021-06-17 16:00:32
最佳解答
        [Route("values/{id:int}")]
        public string GetById(int id) 
        {
            return "int";
        }

        [Route("values/{name}")]
        public string GetByName(string name) 
        {
            return "string";
        }

應該是你想要的

看更多先前的回應...收起先前的回應...
n1056444 iT邦新手 5 級 ‧ 2021-06-17 16:15:18 檢舉

很謝謝您 我有找到這方法 但現在有個問題無法解決 我有設定Authorize但是這將會讓我無法運轉我不太清楚為什麼

allenlwh iT邦高手 1 級 ‧ 2021-06-17 16:42:09 檢舉

Bearer Token嗎?
請參考 https://ithelp.ithome.com.tw/articles/10197166

您可能需要提供比較詳細的資訊才有辦法確認問題點喔,
如果是設定Authorize才導致無法通過,就不是route的問題,
Authorize機制前端呼叫時要有對應的資訊,就看您的驗證機制如何設計,可能是token或其他的作法以及要配合設計登出跟登入的API這樣前端才有辦法取得對應授權

n1056444 iT邦新手 5 級 ‧ 2021-06-18 11:57:35 檢舉

很感謝兩位回覆,其實我也不太懂出錯在哪裡,但是後來他自己又好了起來,我原先有使用Authorize跟API KEY來開放權限,但是使用了Route他就不會進去判斷我的API KEY,這讓我非常困惑,我後來重新建立另外一個新專案是一樣的東西,就可以進入判斷,於是我懷疑是不是因為我的swagger套件,後來測試後又不像是swagger套件,現在是解決了問題但我不太清楚為何會發生這問題。
真的感謝兩位

我要發表回答

立即登入回答