2013-04-02 20 views
15

Hy tam,Małe litery Web API Małe litery

Muszę wymusić Małe litery w moim projekcie Web API. Jeśli to był projekt MVC chciałbym użyć czegoś jak

routes.LowercaseUrls = true; 

Ale w Web API, że obiekt nie istnieje.

Wypróbowałem rozszerzenie NuGet LowercaseRoutesMVC4, ale moje trasy muszą mieć niestandardową procedurę obsługi, aby rozszerzenie nie pomogło mi.

Co mogę zrobić?

+2

Czy próbowałeś już tego z ograniczeniami trasy? https://gist.github.com/benfoster/3274578 – AardVark71

Odpowiedz

6

To wygląda jak robi to co trzeba

public class RouteConfig 
{ 
    public static void RegisterRoutes(RouteCollection routes) 
    { 
     routes.MapHttpRoute(
      name: "DefaultApi", 
      routeTemplate: "api/{controller}/{id}", 
      defaults: new { id = RouteParameter.Optional }, 
      constraints: new { url = new LowercaseRouteConstraint() } 
     ); 
    } 
} 

public class LowercaseRouteConstraint : IRouteConstraint 
{ 
    public bool Match(HttpContextBase httpContext, Route route, string parameterName, RouteValueDictionary values, RouteDirection routeDirection) 
    { 
     var path = httpContext.Request.Url.AbsolutePath; 
     return path.Equals(path.ToLowerInvariant(), StringComparison.InvariantCulture); 
    } 
} 

Znalazłem to na https://gist.github.com/benfoster/3274578#file-gistfile1-cs-L4

-1

Mam json config jak

public class JsonConfig 
{ 
    public static void Initiliaze(HttpConfiguration config, bool isCamelCase) 
    { 
     var json = config.Formatters.JsonFormatter; 
     json.SerializerSettings.PreserveReferencesHandling = PreserveReferencesHandling.None; 
     json.SerializerSettings.ReferenceLoopHandling = ReferenceLoopHandling.Ignore; 
     json.SerializerSettings.Formatting = Formatting.None; 

     if (isCamelCase) 
      json.SerializerSettings.ContractResolver = new CamelCasePropertyNamesContractResolver(); 

     config.Formatters.Remove(config.Formatters.XmlFormatter); 
    } 
} 

Można wywołać tę metodę w WebApiConfig.cs jak

JsonConfig.Initiliaze(config, true);