我有這個網頁API控制器:網頁API屬性與可選參數和查詢路由參數
[RoutePrefix("api/product")]
public class ProductController : ApiController
{
[HttpGet, Route("{id?}")]
public async Task<HttpResponseMessage> GetProduct([FromUri] string param1 = null, [FromUri] string param2 = null, Guid? id = null)
{
...
}
}
我想通過這些URI訪問:
API /產品/參數1 =東西&參數2 = SMT
或
API /產品/ 7b55fcee-21e7-4b10-80e3-42b4d9cf913d?參數1 =東西&參數2 = SMT
但是,第一個uri不工作,路由參數的默認值未設置。
這個URI作品:
API /產品/空參數1 =東西&參數2 = SMT
沒有這一項:??
API /產品/參數1 =東西&參數2 = SMT
我試圖使用類型「字符串」的路由參數,但它仍然沒有工作。
它是參數的順序嗎?
還是我誤解了一些關於Web Api路由映射的內容?
編輯: 我WebApiConfig.cs不包含默認路由:
public static class EdmWebApiConfig
{
public static void Register(HttpConfiguration config)
{
if (config == null) throw new ArgumentNullException(nameof(config));
// Attribute routing
config.MapHttpAttributeRoutes();
...
some declaration of formatters
...
}
}
我應該聲明默認路由?
在我看來,因爲我使用了屬性映射,所以我不需要那樣做。
我試圖改變我的路由這樣的:
[RoutePrefix("api")]
public class ProductController : ApiController
{
[HttpGet, Route("product/get/{id?}")]
public async Task<HttpResponseMessage> GetProduct([FromUri] Guid param1, [FromUri] string param2, Guid? id = null)
{
...
}
}
此URI API /產品/得/參數1 =東西&參數2 = SMT仍然無法正常工作。
(我試過API /產品/?參數1 =東西&參數2 = SMT與相關的路由,不工作)
我需要聲明我WebApiConfig.cs默認路由?
你可以在WebApiConfig.cs中做什麼,你應該可以在屬性路由中做到這一點,不是嗎?像可選參數,約束,...
您的WebApiConfig.cs文件中是否配置了任何路由?是否可以提供路由配置。謝謝 –