首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

.NET Web API Attribute Routing:POST/DELETE 方法測試失敗的原因與正確驗證姿勢

     編輯:程式設計綜合問答

Attribute Routing 下非 GET 請求無法在瀏覽器直接測試的本質

在 ASP.NET Web API 使用 [Route]、[HttpPost]、[HttpDelete] 等屬性路由時,開發者常嘗試在瀏覽器地址欄輸入 URL 測試 POST/DELETE 端點,卻收到 404 或 405 錯誤。這並非路由配置錯誤,而是瀏覽器地址欄只能發起 GET 請求的機制限制。

為什麼 GET 正常而 POST/DELETE 失敗?

  • 瀏覽器地址欄輸入 URL 並回車 → 瀏覽器發送 HTTP GET** 請求。
  • 服務端路由匹配:[HttpGet] 匹配成功;[HttpPost]/[HttpDelete] 拒絕非對應動詞,返回 405 Method Not Allowed(或因無 GET 版本路由返回 404)。

正確的驗證方法(必須構造對應 HTTP 動詞)

工具/方式適用場景示例
Postman / Insomnia最推薦,圖形化構造任意請求POST https://localhost:port/api/values Body: JSON
curl命令行快速驗證curl -X POST -H "Content-Type: application/json" -d '{"id":2}' https://localhost:port/api/values
HttpClient / HttpWebRequest代碼級集成測試C# 編寫單元測試調用端點
Swagger / SwashbuckleAPI 文檔與在線測試一體化啟用 Swagger UI,頁面直接發送 POST/DELETE
瀏覽器開發者工具 Console前端聯調時fetch('/api/values', {method:'POST', body:JSON.stringify({id:2})})

路由配置檢查清單(排除真正配置錯誤)

  1. 控制器繼承 ApiController。
  2. 方法標註 [HttpPost]/[HttpDelete] 或 [AcceptVerbs("POST")]。
  3. 路由模板無衝突:[Route("api/values/{id}")]。
  4. WebApiConfig.Register 中調用 config.MapHttpAttributeRoutes()。
  5. 無全局 RoutePrefix 衝突導致路徑錯位。

總結

瀏覽器地址欄 ≠ API 測試工具。請使用 Postman、curl 或 Swagger UI 進行非 GET 請求的驗證,這是 Web API 開發的基本功。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved