~WEB API~利用Attribute Routing 達到版本分離

摘要:利用Attribute Routing 達到版本分離

最近剛好工作上的需求,需要將現行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

範例程式碼

 

 

 

 

 

 

參考連結

Attribute Routing in ASP.NET Web API 2

ASP.NET MVC - 使用 Attribute Routing