我使用的Web API進行故事的名單,我想這樣做:Asp.Net的MVC Web阿比路由問題
- 列表GetAllTales()= API /故事/
- 故事GetTale(INT ID) = API /故事/ 1
- 列表GetAllTalesByCategory(串類別名)= API /故事/孩子
- 故事GetTalesByCategoryAndId(串類別名稱,INT ID)= API /故事/小孩/ 1
我做nt知道什麼可以做到這一點,或者我可以在路由配置中改變什麼?
我TalesController:ApiController
public IEnumerable<Tale> GetAllTales()
{
return TaleService.FindAllTale();
}
public IEnumerable<Tale> GetAllTalesByCategory(string categoryName){}
public Tale GetTale(int id)
{
Tale item = TaleService.FindByTaleId(id);
if (item == null)
{
throw new HttpResponseException(new HttpResponseMessage(HttpStatusCode.NotFound));
}
return item;
}
它我WebApiConfig
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional },
constraints: new { id = @"^[0-9]+$" }
);
config.Routes.MapHttpRoute(
name: "ApiByName",
routeTemplate: "api/{controller}/{name}",
defaults: null,
constraints: new { name = @"^[a-z]+$" }
);
一些示例爲我的目標:http://www.bbc.com/news/ - http://www.bbc.co.uk/news/technology/
感謝您的回答。我知道了,我改變了我的代碼,但是如果我寫「/ api/tales/kids」這個請求使用GetTale(int id)。我沒有使用[ActionName]和GetAllTalesByCategory函數。因爲這個功能有很多東西(娛樂......)。我認爲我必須編寫diffirent MapRoute。 – BerdaN
看到我的編輯它有一個SO問題,可以幫助您創建多個路線。 –
我看到並嘗試類似的東西,但我沒有做到這一點。所以我改變了一點我的問題。現在它更容易理解。 – BerdaN