By decorating ActionName attribute -
public class MyController : ApiController
{
[ActionName("GetById")]
public Foo Get(int id) { //whatever }
[ActionName("GetByString")]
public Foo Get(string id) { //whatever }
[ActionName("GetByGUID")]
public Foo Get(Guid id) { //whatever }
}
Or,
By routing decoration-
//Should match /api/My/1 config.Routes.MapHttpRoute( name: "DefaultDigitApi", routeTemplate: "api/{controller}/{id}", defaults: new { action = "GetById" }, constraints: new { id = @"^\d+$" } // id must be digits ); //Should match /api/My/3ead6bea-4a0a-42ae-a009-853e2243cfa3 config.Routes.MapHttpRoute( name: "DefaultGuidApi", routeTemplate: "api/{controller}/{id}", defaults: new { action = "GetByGUID" }, constraints: new { id = @"^(\{{0,1}([0-9a-fA-F]){8}-([0-9a-fA-F]){4}-([0-9a-fA-F]){4}-([0-9a-fA-F]){4}-([0-9a-fA-F]){12}\}{0,1})$" } // id must be guid ); //Should match /api/My/everything else config.Routes.MapHttpRoute( name: "DefaultStringApi", routeTemplate: "api/{controller}/{id}", defaults: new { action = "GetByString" } );
No comments:
Post a Comment