我正在嘗試使用API設置Asp.Net表單網站。 我已成功添加了選擇性驗證,因此啓動「\ api \」的頁面不會重定向,而是會針對基本身份驗證提出挑戰。 我現在正在嘗試使用MS Web Api 2來執行API路由。如何將可選的URI參數路由到API控制器功能
這個想法是儘可能RESTful。我有一個資源,一個TradableItem,最初我希望允許API用戶以兩種方式之一使用HTTP GET。
如果API用戶通過沒有項目鍵,如果API用戶通過一個項目密鑰作爲URI的一部分用戶接收可能項目鍵
["ABC","DEF"...]
的列表,例如「/ API /貿易品/ abc「,則返回具有密鑰= ABC的那個TradableItem的表示。 (據我的理解,這是標準的REST行爲)。
在Global.asax中的的Application_Start()函數我有一個路線圖是這樣的...
RouteTable.Routes.MapHttpRoute(
name: "TradableItemVerbs",
routeTemplate: "api/tradables/{item}",
defaults: new { item = System.Web.Http.RouteParameter.Optional, controller = "Tradable" });
的TradableController.cs文件看起來像這樣...
public class TradableController : ApiController
{
private static CustomLog logger = new CustomLog("TradableController");
// GET api/<controller>
public IEnumerable<string> GetKeys()
{
var prefix = "GetKeys() - ";
string msg = "";
msg = "Function called, returning list of tradable pkeys...";
logger.Debug(prefix + msg);
// Get a list of tradable items
return TradableManager.GetTradablePkeys();
}
// GET api/<controller>/<pkey>
public string GetTradable(string pkey)
{
string msg = string.Format("Would get Tradable data for key: >{0}<", pkey);
return msg;
}
}
的問題是隻有GetKeys()函數會觸發,無論我是否將GET調用到「/ api/tradables」或「/ api/tradables/abc」。
僅供參考,使用VS2015社區,IIS 7.5,目標.Net 4.6.1。我使用Rick Strahl的博客作爲此指南(以及其他來源)。
http://weblog.west-wind.com/posts/2012/Aug/21/An-Introduction-to-ASPNET-Web-API#HTTPVerbRouting
謝謝@ julito-avellaneda,這工作。我假設函數將使用類型,而不是變量的顯式名稱。你有沒有WebAPI2初學者教程的任何好鏈接(最好是非MVC,但不管)。 –
Hi @SteveHibbert您可以從http://www.asp.net/web-api開始,然後閱讀apress書籍:http://www.apress.com/catalogsearch/result/?q=web+api&submit=Go –