我有一個名為WeatherForecast的 WebAPI 控制器,其中包含一個操作。操作方法如下:
[HttpGet(Name = "GetWeatherForecast")]
public IEnumerable<WeatherForecast> Get()
{
return Enumerable.Range(1, 5).Select(index => new WeatherForecast
{
Date = DateTime.Now.AddDays(index),
TemperatureC = Random.Shared.Next(-20, 55),
Summary = Summaries[Random.Shared.Next(Summaries.Length)]
})
.ToArray();
}
但是,HttpGet.Name = "GetWeatherForecast"應該定義一個路由名稱“GetWeatherForecast”,因為我了解該Name屬性的屬性的用途。
但是 Swagger 顯示操作本身根本沒有路由: 顯示的 URL 是https://localhost:port/WeatherForecast (服務操作可以通過那個 URL 消費,我使用 Postman 進行測驗)
但是使用HttpGet帶有Name屬性集的屬性,我希望它是 https://localhost:port/WeaterhForecast/ GetWeatherForecast
當我在操作方法上額外使用Route屬性
(Route("GetWeatherForecast")
所以,問題是:為什么Name屬性的HttpGet屬性沒有按照檔案承諾的那樣做?或者HttpGetAttribute.Name真正的用途是什么?
源代碼是使用 .NET 6.0 和 VS 2022 制作的,專案型別為 ASP.NET Core-Web-API。顯示的代碼來自專案模板自動創建的控制器。
uj5u.com熱心網友回復:
您使用HttpGet屬性的方式:
[HttpGet(Name = "GetWeatherForecast")]
意味著您指定的Name屬性不會更改路由 URL 的生成方式。路由名稱可用于使用特定路由生成鏈接,而不是依賴于基于給定路由值集的路由選擇。
相反,您應該Template通過排除命名引數或使用正確的名稱來指定屬性:
[HttpGet("GetWeatherForecast")]
或者:
[HttpGet(Template = "GetWeatherForecast")]
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/422413.html
標籤:
上一篇:Asp.NetCore-如何從兩個表中回傳元組串列?
下一篇:相對影像URL
