WebApi一個控制器中定義多個Get方法。


問題:怎樣解決一個ApiController中定義多個Get方法或者Post方法?

答:要想實現一個ApiController中定義多個Get方法或者Post方法,則需要在WebApiConfig類中的Register()中自定義路由規則,規則中顯示指定action。

示例:

       // Web API 路由
 config.MapHttpAttributeRoutes(); //自定義指定action的路由。2017.11.11 14:56 added by longdb
 config.Routes.MapHttpRoute( name: "WebApiTest", routeTemplate: "api/{controller}/{action}/{id}", defaults: new { id = RouteParameter.Optional } ); //默認路由規則。 //config.Routes.MapHttpRoute( // name: "WebApiTest", // routeTemplate: "api/{controller}/{id}", // defaults: new { id = RouteParameter.Optional } //);

 

ApiController中兩個Get方法:

 public class WebApiTestController : ApiController { [HttpGet] public string GetString() { string sql = @"SELECT TOP 10 0 cnt, '1' ck,no,name,object,score,id FROM dbo.infor WHERE id IN(SELECT TOP 10 id FROM dbo.infor ORDER BY id) UNION ALL SELECT COUNT(id) cnt,'1' ck,'' no, '' name,'' object,'' score,'' id FROM dbo.infor"; DataTable dt = DBHelper.DBExecuteByAdapter(sql); return JSONInterFace.DataTableToJsonWithJsonNet(dt);//.Rows.Count.ToString();
 } [HttpGet] public IHttpActionResult GetStudentInfor() { List<StudentModel> stlists = new List<StudentModel>(); stlists.Add(new StudentModel { hno = "1001", hname = "龍大炳", hobject = "WebApi", hscore = "90" }); stlists.Add(new StudentModel { hno = "1002", hname = "龍大炳", hobject = "Ajax", hscore = "80" }); stlists.Add(new StudentModel { hno = "1003", hname = "龍大炳", hobject = "SignalR", hscore = "88" }); return Json<List<StudentModel>>(stlists);//, Newtonsoft.Json.JsonSerializer.CreateDefault.stlists);
 } }

 

 

注意點:不能定義重復名稱的路由,路由名稱必須唯一。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM