摘要:
最近剛好工作上的需求,需要將現行API做新增的功能的部份.
但又不希望影響現行的版本,
故有前輩提到可以透過Attribute Routing來達到已不影響現行版API的功能,
又可以繼續往下開發.
在這裡就當做一篇記事文嚕!
如果有寫的不好的地方也請各位前輩不吝指導
一.新增一個空白的MVC4的專案
二.透過NUGET安裝Microsoft.AspNet.WebApi.WebHost
三. 開啟App_Start\WebApiConfig.cs 加入
config.MapHttpAttributeRoutes();
四.開啟Global.asax.cs
將WebApiConfig.Register(GlobalConfiguration.Configuration); 註解起來,
加入 GlobalConfiguration.Configure(WebApiConfig.Register);
五.新增一個Controller來做測試嚕
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Net.Http;
using System.Web.Http;
namespace RouteVersion.Controllers
{
[RoutePrefix("v1")]
public class Default_v1Controller : ApiController
{
[Route("getval")]
public IEnumerable Get()
{
return new string[] { "V1_value1", "V1_value2" };
}
}
[RoutePrefix("v2")]
public class Default_v2Controller : ApiController
{
[Route("getval")]
public IEnumerable Get()
{
return new string[] { "V2_value1", "V2_value2" };
}
}
}
利用[RoutePrefix("v1")]來設定controller的位置,
並透過[Route("getval")]來公開存取controller內的方法.
所以呼叫方式就會像下列
http://localhost:49097/v1/getval
http://localhost:49097/v2/getval
接下來就利用POSTMAN來測試,是否能執行成功
http://localhost:49097/v1/getval
http://localhost:49097/v2/getval