Пример #1
0
        public static void Register(HttpConfiguration config)
        {
            // Web API configuration and services

            // Web API routes
            config.MapHttpAttributeRoutes();

            config.Routes.MapHttpRoute(
              name: "DefaultApi",
              routeTemplate: "api/{controller}/{id}",
              defaults: new { id = RouteParameter.Optional }
            );

            // Remove XML
            var applicationXmlType = config.Formatters.XmlFormatter.SupportedMediaTypes
               .FirstOrDefault(p => p.MediaType == "application/xml");
            config.Formatters.XmlFormatter.SupportedMediaTypes.Remove(applicationXmlType);

            // Camel case names
            var jsonFormatter = config.Formatters.OfType<JsonMediaTypeFormatter>().FirstOrDefault();
            jsonFormatter.SerializerSettings.ContractResolver = new CamelCasePropertyNamesContractResolver();

            //Support JsonP http://en.wikipedia.org/wiki/JSONP
            //Install-Package WebApiContrib.Formatting.Jsonp
            var jsonpFormatter = new JsonpMediaTypeFormatter(jsonFormatter);
            config.Formatters.Insert(0, jsonpFormatter);

            //Tell WebApi to create custom MediaTypes
            CreateMediaTypes(jsonFormatter);

            //Use your own ControllerSelector
            config.Services.Replace(typeof(IHttpControllerSelector),
              new ApiVersioningSelector(config));
        }
        public static void Register(HttpConfiguration config)
        {
            config.EnableCors();
            // Web API configuration and services
            // Configure Web API to use only bearer token authentication.
            config.SuppressDefaultHostAuthentication();
            config.Filters.Add(new HostAuthenticationFilter(OAuthDefaults.AuthenticationType));

            // Web API routes
            config.MapHttpAttributeRoutes();

            config.Routes.MapHttpRoute(
                name: "Food",
                routeTemplate: "webapi/nutrition/food/{foodid}",
                defaults: new { controller = "Food", foodid = RouteParameter.Optional, log = RouteParameter.Optional }
                );

            config.Routes.MapHttpRoute(
                name: "FoodType",
                routeTemplate: "webapi/nutrition/foodtype/{foodid}",
                defaults: new { controller = "FoodType", foodid = RouteParameter.Optional, log = RouteParameter.Optional }
                );

            config.Routes.MapHttpRoute(
                name: "SellersFood",
                routeTemplate: "webapi/nutrition/food/{foodid}/sellers/{sellerid}",
                defaults: new { controller = "Sellers", sellerid = RouteParameter.Optional }
                );

            config.Routes.MapHttpRoute(
                name: "Diaries",
                routeTemplate: "webapi/user/diaries/{dairyid}",
                defaults: new { controller = "diaries", dairyid = RouteParameter.Optional }
                );

            config.Routes.MapHttpRoute(
                name: "DiariesEntries",
                routeTemplate: "webapi/user/diaries/{dairyid}/entries/{entrieid}",
                defaults: new { controller = "entries", entrieid = RouteParameter.Optional, log = RouteParameter.Optional }
                );

            //config.Routes.MapHttpRoute(
            //    name: "DefaultApi",
            //    routeTemplate: "api/{controller}/{id}",
            //    defaults: new { id = RouteParameter.Optional }
            //);
            //GlobalConfiguration.Configuration.Formatters.XmlFormatter.SupportedMediaTypes.Clear();
            var jsonFormater = config.Formatters.OfType<JsonMediaTypeFormatter>().FirstOrDefault();
            if (jsonFormater != null)
                jsonFormater.SerializerSettings.ContractResolver = new CamelCasePropertyNamesContractResolver();

            var formattier = new JsonpMediaTypeFormatter(jsonFormater);
            config.Formatters.Insert(0, formattier);

            # if !DEBUG
            //Force HTTPS
            config.Filters.Add(new RequireHttpsAttribute());
            #endif
        }
        public static void RegisterFormatters(MediaTypeFormatterCollection formatters)
        {
            var jsonFormatter = formatters.JsonFormatter;
            jsonFormatter.SerializerSettings.ContractResolver = new CamelCasePropertyNamesContractResolver();

            var jsonpFormatter = new JsonpMediaTypeFormatter(jsonFormatter);
            formatters.Add(jsonpFormatter);
        }
Пример #4
0
    public static void Register(HttpConfiguration config)
    {
      config.Routes.MapHttpRoute(
          name: "Food",
          routeTemplate: "api/nutrition/foods/{foodid}",
          defaults: new { controller = "foods", foodid = RouteParameter.Optional }
      );

      config.Routes.MapHttpRoute(
          name: "Measures",
          routeTemplate: "api/nutrition/foods/{foodid}/measures/{id}",
          defaults: new { controller = "measures", id = RouteParameter.Optional }
      );

      config.Routes.MapHttpRoute(
          name: "Diaries",
          routeTemplate: "api/user/diaries/{diaryid}",
          defaults: new { controller = "diaries", diaryid = RouteParameter.Optional }
      );

      config.Routes.MapHttpRoute(
          name: "DiaryEntries",
          routeTemplate: "api/user/diaries/{diaryid}/entries/{id}",
          defaults: new { controller = "diaryentries", id = RouteParameter.Optional }
      );

      config.Routes.MapHttpRoute(
          name: "DiarySummary",
          routeTemplate: "api/user/diaries/{diaryid}/summary",
          defaults: new { controller = "diarysummary" }
      );

      config.Routes.MapHttpRoute(
          name: "Token",
          routeTemplate: "api/token",
          defaults: new { controller = "token" }
      );

      // Uncomment the following line of code to enable query support for actions with an IQueryable or IQueryable<T> return type.
      // To avoid processing unexpected or malicious queries, use the validation settings on QueryableAttribute to validate incoming queries.
      // For more information, visit http://go.microsoft.com/fwlink/?LinkId=279712.
      //config.EnableQuerySupport();

      var jsonFormatter = config.Formatters.OfType<JsonMediaTypeFormatter>().FirstOrDefault();
      jsonFormatter.SerializerSettings.ContractResolver = new CamelCasePropertyNamesContractResolver();

      // Add support JSONP
      var formatter = new JsonpMediaTypeFormatter(jsonFormatter, "cb");
      config.Formatters.Insert(0, formatter);

#if !DEBUG
      // Force HTTPS on entire API
      config.Filters.Add(new RequireHttpsAttribute());
#endif

    }
Пример #5
0
        public static void RegisterFormatters(MediaTypeFormatterCollection formatters)
        {
            var jsonFormatter = formatters.JsonFormatter;
            jsonFormatter.SerializerSettings = new JsonSerializerSettings
            {
                ContractResolver = new CamelCasePropertyNamesContractResolver()
            };

            // Insert the JSONP formatter in front of the standard JSON formatter.
            var jsonpFormatter = new JsonpMediaTypeFormatter(formatters.JsonFormatter);
            formatters.Insert(0, jsonpFormatter);
        }
        public static void Register(HttpConfiguration config)
        {
            config.Routes.MapHttpRoute(
                name: "DefaultApi",
                routeTemplate: "cep/{zipCode}",
                defaults: new { controller = "Address", action = "Get" },
                constraints: new { zipCode = @"^\d+$" }
            );

            var jsonpFormatter = new JsonpMediaTypeFormatter { Indent = true };

            config.Formatters.Insert(0, jsonpFormatter);
            config.Formatters.JsonFormatter.SerializerSettings.ContractResolver = new CamelCasePropertyNamesContractResolver();
            config.Formatters.JsonFormatter.Indent = true;
            config.EnableSystemDiagnosticsTracing();
        }
        protected void Application_Start()
        {
            AreaRegistration.RegisterAllAreas();

            WebApiConfig.Register(GlobalConfiguration.Configuration);
            FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
            RouteConfig.RegisterRoutes(RouteTable.Routes);
            BundleConfig.RegisterBundles(BundleTable.Bundles);

            var json = GlobalConfiguration.Configuration.Formatters.JsonFormatter;
            json.SerializerSettings.ContractResolver = new CamelCasePropertyNamesContractResolver();
            json.SerializerSettings.NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore;
            json.SerializerSettings.DefaultValueHandling = Newtonsoft.Json.DefaultValueHandling.Ignore;

            var jsonp = new JsonpMediaTypeFormatter(json);

            //GlobalConfiguration.Configuration.Formatters.Insert(0, jsonp);
            GlobalConfiguration.Configuration.Formatters.XmlFormatter.SupportedMediaTypes.Clear();
        }
Пример #8
0
        public static void Register(HttpConfiguration config)
        {
            config.Routes.MapHttpRoute(
              name: "Food",
              routeTemplate: "api/nutrition/foods/{foodid}",
              defaults: new { controller = "foods", foodid = RouteParameter.Optional }
              );

              config.Routes.MapHttpRoute(
              name: "Measures",
              routeTemplate: "api/nutrition/foods/{foodid}/measures/{id}",
              defaults: new { controller = "measures", id = RouteParameter.Optional }
              );

              //config.Routes.MapHttpRoute(
              //    name: "Measures2",
              //    routeTemplate: "api/nutrition/foods/{foodid}/measures/{id}",
              //    defaults: new { controller = "measuresv2", id = RouteParameter.Optional }
              //);

              config.Routes.MapHttpRoute(
              name: "Diaries",
              routeTemplate: "api/user/diaries/{diaryid}",
              defaults: new { controller = "diaries", diaryid = RouteParameter.Optional }
              );

              config.Routes.MapHttpRoute(
              name: "DiaryEntries",
              routeTemplate: "api/user/diaries/{diaryid}/entries/{id}",
              defaults: new { controller = "diaryentries", id = RouteParameter.Optional }
              );

              config.Routes.MapHttpRoute(
              name: "DiarySummary",
              routeTemplate: "api/user/diaries/{diaryid}/summary",
              defaults: new { controller = "diarysummary" }
              );

              config.Routes.MapHttpRoute(
              name: "Tokens",
              routeTemplate: "api/token",
              defaults: new { controller = "token" }
              );

              // Uncomment the following line of code to enable query support for actions with an IQueryable or IQueryable<T> return type.
              // To avoid processing unexpected or malicious queries, use the validation settings on QueryableAttribute to validate incoming queries.
              // For more information, visit http://go.microsoft.com/fwlink/?LinkId=279712.
              //config.EnableQuerySupport();

              var jsonFormatter = config.Formatters.OfType<JsonMediaTypeFormatter>().FirstOrDefault();
              jsonFormatter.SerializerSettings.ContractResolver = new CamelCasePropertyNamesContractResolver();
              jsonFormatter.SerializerSettings.Converters.Add(new LinkModelConverter());
              CreateMediaTypes(jsonFormatter);

              // Add support JSONP
              var formatter = new JsonpMediaTypeFormatter(jsonFormatter, "cb");
              config.Formatters.Insert(0, formatter);

              // Replace the Controller Configuration
              config.Services.Replace(typeof(IHttpControllerSelector),
            new CountingKsControllerSelector(config));

              // Configure Caching/ETag Support
              var connString = ConfigurationManager.ConnectionStrings["DefaultConnection"].ConnectionString;
              // REMINDER: Make sure you've run the SQL Scripts in the
              //           Package Folder!
              var etagStore = new SqlServerEntityTagStore(connString);
              var cacheHandler = new CachingHandler(etagStore);
              config.MessageHandlers.Add(cacheHandler);

            #if !DEBUG
              // Force HTTPS on entire API
              config.Filters.Add(new RequireHttpsAttribute());
            #endif
        }
Пример #9
0
        public static void Register(HttpConfiguration config)
        {
            //config.Routes.MapHttpRoute(
            //    name: "DefaultApi",
            //    routeTemplate: "api/{controller}/{id}",
            //    defaults: new { id = RouteParameter.Optional }
            //);

            config.Routes.MapHttpRoute(
              name: "User",
              routeTemplate: "api/Users/{id}",
              defaults: new { controller = "User", id = RouteParameter.Optional }
              );

            config.Routes.MapHttpRoute(
            name: "ContactGroup",
            routeTemplate: "api/Users/{userid}/contactgroup/{contactgroupid}",
            defaults: new { controller = "ContactGroup", contactgroupid = RouteParameter.Optional }
            );

            config.Routes.MapHttpRoute(
             name: "Contacts",
             routeTemplate: "api/contactgroup/{contactgroupid}/contacts/{contactId}",
             defaults: new { controller = "Contacts", contactId = RouteParameter.Optional }
             );

               config.Routes.MapHttpRoute(
              name: "Notifications",
              routeTemplate: "api/Users/{userid}/Notifications/{notificationid}",
              defaults: new { controller = "Notifications", notificationid = RouteParameter.Optional }
              );

               config.Routes.MapHttpRoute(
            name: "Organizations",
            routeTemplate: "api/Organizations/{organizationid}",
            defaults: new { controller = "Organizations", organizationid = RouteParameter.Optional }
            );

               config.Routes.MapHttpRoute(
            name: "Message",
            routeTemplate: "api/contactgroup/{contactgroupid}/notifications/{notificationid}/Message/{messageId}",
            defaults: new { controller = "Message", messageId = RouteParameter.Optional }
            );

               config.Routes.MapHttpRoute(
              name: "Tokens",
              routeTemplate: "api/token",
              defaults: new { controller = "token" }
              );

            // Uncomment the following line of code to enable query support for actions with an IQueryable or IQueryable<T> return type.
            // To avoid processing unexpected or malicious queries, use the validation settings on QueryableAttribute to validate incoming queries.
            // For more information, visit http://go.microsoft.com/fwlink/?LinkId=279712.
            //config.EnableQuerySupport();

            // To disable tracing in your application, please comment out or remove the following line of code
            // For more information, refer to: http://www.asp.net/web-api
            config.EnableSystemDiagnosticsTracing();

            var jsonFormatter = config.Formatters.OfType<JsonMediaTypeFormatter>().FirstOrDefault();
            jsonFormatter.SerializerSettings.ContractResolver = new CamelCasePropertyNamesContractResolver();

            config.Formatters.JsonFormatter.SerializerSettings.ReferenceLoopHandling = Newtonsoft.Json.ReferenceLoopHandling.Serialize;
            config.Formatters.JsonFormatter.SerializerSettings.PreserveReferencesHandling = Newtonsoft.Json.PreserveReferencesHandling.Objects;

            // Add support JSONP
            var formatter = new JsonpMediaTypeFormatter(jsonFormatter, "cb");
            config.Formatters.Insert(0, formatter);

            #if !DEBUG
              // Force HTTPS on entire API
              config.Filters.Add(new RequireHttpsAttribute());
            #endif
        }
Пример #10
0
 public static void RegisterFormatters(MediaTypeFormatterCollection formatters)
 {
     var jsonFormatter = formatters.JsonFormatter;
     var jsonpFormatter = new JsonpMediaTypeFormatter(formatters.JsonFormatter);
     formatters.Insert(0, jsonpFormatter);
 }
Пример #11
0
        public static void Register(HttpConfiguration config)
        {
            //var container = new UnityContainer();
            //container.RegisterType<IDbContext, RCDB>(new HierarchicalLifetimeManager());
            //container.LoadConfiguration();
            //config.DependencyResolver = new UnityResolver(container);
            config.DependencyResolver = IoC.IocContainer.UnityResolver;

            config.Routes.MapHttpRoute(
                name: "Restaurants",
                routeTemplate: "api/rc/restaurants/{restaurantid}",
                defaults: new { controller = "restaurants", restaurantid = RouteParameter.Optional }
                //,constraints: new { id = @"\d+" }//one or more digits
            );
            config.Routes.MapHttpRoute(
                name: "Reviews",
                routeTemplate: "api/rc/restaurants/{restaurantid}/reviews/{id}",
                defaults: new { controller = "reviews", id = RouteParameter.Optional }
            );
            config.Routes.MapHttpRoute(
                name: "Orders",
                routeTemplate: "api/client/orders/{orderid}",
                defaults: new { controller = "orders", orderid = RouteParameter.Optional }
            );
            config.Routes.MapHttpRoute(
                name: "OrdersItems",
                routeTemplate: "api/client/orders/{orderid}/items/{id}",
                defaults: new { controller = "orderitems", id = RouteParameter.Optional }
            );
            config.Routes.MapHttpRoute(
                name: "OrderSummary",
                routeTemplate: "api/client/orders/{orderid}/summary",
                defaults: new { controller = "ordersummary"}
            );

            //config.Routes.MapHttpRoute(
            //    name: "Products",
            //    routeTemplate: "api/products/{id}",
            //    defaults: new { controller = "products", id = RouteParameter.Optional }
            //);

            config.Routes.MapHttpRoute(
                name: "Products",
                routeTemplate: "api/products/{id}/{action}/{entityid}",
                defaults: new
                    {
                        controller = "products",
                        id = RouteParameter.Optional,
                        entityid = RouteParameter.Optional,
                        action = "DefaultAction"
                    }
            );

            //config.Routes.MapHttpRoute(
            //    name: "Products",
            //    routeTemplate: "api/products/{id}",
            //    defaults: new
            //    {
            //        controller = "productsv2",
            //        id = RouteParameter.Optional
            //    }
            //);

            //using routing to version with URL
            /*
            config.Routes.MapHttpRoute(
                name: "Products2",
                routeTemplate: "api/v2/products/{id}",
                defaults: new
                {
                    controller = "productsv2",
                    id = RouteParameter.Optional
                }
            );
            */

            //config.Routes.MapHttpRoute(
            //    name: "DefaultApi",
            //    routeTemplate: "api/{controller}/{id}",
            //    defaults: new { id = RouteParameter.Optional }
            //);

            //VP1 -- makes JSON the default webApi response type
            //config.Formatters.JsonFormatter.SupportedMediaTypes.Add(new MediaTypeHeaderValue("text/html"));

            //VP2
            //var appXmlType = config.Formatters.XmlFormatter.SupportedMediaTypes.FirstOrDefault(t => t.MediaType == "application/xml");
            //config.Formatters.XmlFormatter.SupportedMediaTypes.Remove(appXmlType);

            //VP3
            //var xmlFormatter = config.Formatters.OfType<XmlMediaTypeFormatter>().FirstOrDefault();
            //config.Formatters.Remove(xmlFormatter);
            //config.Formatters.JsonFormatter.SupportedMediaTypes.Add(new MediaTypeHeaderValue("text/html"));
            //config.Formatters.JsonFormatter.SupportedMediaTypes.Add(new MediaTypeHeaderValue("text/xml"));

            //config.Formatters.JsonFormatter.MediaTypeMappings.Add(new RequestHeaderMapping("Accept", "text/html", StringComparison.InvariantCultureIgnoreCase, true, "application/json"));
            //GlobalConfiguration.Configuration.Formatters.JsonFormatter.MediaTypeMappings.Add(new RequestHeaderMapping("Accept", "text/html", StringComparison.InvariantCultureIgnoreCase, true, "application/json"));

            //var jsonFormatter = config.Formatters.OfType<JsonMediaTypeFormatter>().FirstOrDefault();
            //jsonFormatter.SerializerSettings.ContractResolver = new CamelCasePropertyNamesContractResolver();
            //jsonFormatter.SerializerSettings.Converters.Add(new LinkModelConverter());

            /*
            //Add support JSONP
            var jsonpformatter = new JsonpMediaTypeFormatter(jsonFormatter,"cb");
            config.Formatters.Insert(0,jsonpformatter);

            config.Formatters.JsonFormatter.MediaTypeMappings.Add(new RequestHeaderMapping("Accept", "text/html", StringComparison.InvariantCultureIgnoreCase, true, "application/json"));

            jsonFormatter.SerializerSettings.Converters.Add(new LinkModelConverter());

            CreateMediaTypes(jsonFormatter);

            //Add support JSONP
            var jsonpformatter = new JsonpMediaTypeFormatter(jsonFormatter, "cb");
            config.Formatters.Insert(0, jsonpformatter);

            */

            var jsonFormatter = config.Formatters.OfType<JsonMediaTypeFormatter>().FirstOrDefault();
            jsonFormatter.MediaTypeMappings.Add(new RequestHeaderMapping("Accept", "text/html", StringComparison.InvariantCultureIgnoreCase, true, "application/json"));
            jsonFormatter.SerializerSettings.ContractResolver = new CamelCasePropertyNamesContractResolver();
            jsonFormatter.SerializerSettings.Converters.Add(new LinkModelConverter());

            var jsonpFormatter = new JsonpMediaTypeFormatter(jsonFormatter, "cb");
            config.Formatters.Insert(0, jsonpFormatter);

            CreateMediaTypes(jsonFormatter);

            //replace the Controller original configiration with custom config
            //web api 1
            //not gonna to use it in WEB API 2
            config.Services.Replace(typeof(IHttpControllerSelector), new RCControllerSelector(config));

            //custom code
            //Forse HTTPS on entire API
            #if !DEBUG
            config.Filters.Add(new RequireHttpsAttribute());
            #endif

            //Configure Caching/Etag support
            var connString = ConfigurationManager.ConnectionStrings["RCDB"].ConnectionString;
            var etagStore = new SqlServerEntityTagStore(connString);
            //var cacheHandler = new CachingHandler(config);

            var cacheHandler = new CachingHandler(config, etagStore);
            cacheHandler.AddLastModifiedHeader = false;
            //config.MessageHandlers.Add(cacheHandler);

            // Uncomment the following line of code to enable query support for actions with an IQueryable or IQueryable<T> return type.
            // To avoid processing unexpected or malicious queries, use the validation settings on QueryableAttribute to validate incoming queries.
            // For more information, visit http://go.microsoft.com/fwlink/?LinkId=279712.
            //config.EnableQuerySupport();

            // To disable tracing in your application, please comment out or remove the following line of code
            // For more information, refer to: http://www.asp.net/web-api
            config.EnableSystemDiagnosticsTracing();
        }
Пример #12
0
        public static void Register(HttpConfiguration config)
        {
            config.MapHttpAttributeRoutes();
            /*
            config.Routes.MapHttpRoute(
            name: "Food",
            routeTemplate: "api/nutrition/{foodid}",
            defaults: new { Controller = "Foods", foodid = RouteParameter.Optional },
            constraints: new { id="/d+"} //regular expression for the parameter so its only an integer that accepted
            );
            */
            config.Routes.MapHttpRoute(
            name: "Measures",
            routeTemplate: "api/nutrition/{foodid}/measures/{id}",
            defaults: new { Controller = "measures", id = RouteParameter.Optional },
            constraints: new { id = "/d+" } //regular expression for the parameter so its only an integer that accepted
            );
            /*
            config.Routes.MapHttpRoute(
            name: "Measures2",
            routeTemplate: "api/nutrition/{foodid}/measures/{id}",
            defaults: new { Controller = "MeasuresV2", id = RouteParameter.Optional },
            constraints: new { id = "/d+" } //regular expression for the parameter so its only an integer that accepted
            );
            */
            config.Routes.MapHttpRoute(
            name: "Diaries",
            routeTemplate: "api/user/diaries/{diaryid}",
            defaults: new { Controller = "diaries", diaryid = RouteParameter.Optional }
            );

            config.Routes.MapHttpRoute(
            name: "DiarySummary",
            routeTemplate: "api/user/diaries/{diaryid}/summary",
            defaults: new { Controller = "DiarySummary" }
            );

            config.Routes.MapHttpRoute(
            name: "Token",
            routeTemplate: "api/token",
            defaults: new { Controller = "token" }
            );

              config.Routes.MapHttpRoute(
              name: "DefaultApi",
              routeTemplate: "api/{controller}/{id}",
              defaults: new { id = RouteParameter.Optional }
            );

              // Uncomment the following line of code to enable query support for actions with an IQueryable or IQueryable<T> return type.
              // To avoid processing unexpected or malicious queries, use the validation settings on QueryableAttribute to validate incoming queries.
              // For more information, visit http://go.microsoft.com/fwlink/?LinkId=279712.
              //config.EnableQuerySupport();

            var jsonFormatter = config.Formatters.OfType<JsonMediaTypeFormatter>().FirstOrDefault();
            jsonFormatter.SerializerSettings.ContractResolver = new CamelCasePropertyNamesContractResolver();
            jsonFormatter.SerializerSettings.Converters.Add(new LinkModelConverter()); //converters know how to convert into and out of json
            CreateMediaTypes(jsonFormatter);

            //Add support for jsonp
            //without accepts header will go to json, need accepts with javascript
            //also nees ?callback= in the url
            var formatter = new JsonpMediaTypeFormatter(jsonFormatter,"cb");
            config.Formatters.Insert(0, formatter);

            //Replace the controller configuration with our controller selector
            //config.Services.Replace(typeof(IHttpControllerSelector),new CountingKsControllerSelector(config));

            //Configure caching/etag support
            //this outputs etag after request in response header
            var connString=ConfigurationManager.ConnectionStrings["DefaultConnection"].ConnectionString;
            var etagStore = new SqlServerEntityTagStore(connString);
            var cacheHandler = new CachingHandler(config);  //not sure if config is correct, example didnt pass any params
            cacheHandler.AddLastModifiedHeader = false;  // not needed, true by default
            config.MessageHandlers.Add(cacheHandler);

            //Add support for cross origin resource supprt (CORS)
            var attr = new EnableCorsAttribute("*", "*", "GET");
            config.EnableCors(attr); //allowed to enable, not enabled yet

            #if !DEBUG
                //Force HTTPS on entire API
                config.Filters.Add(new RequireHttpsAttribute());
            #endif
        }
Пример #13
0
        public static void Register(HttpConfiguration config)
        {
            config.MapHttpAttributeRoutes();

            //config.Routes.MapHttpRoute(
            //    name: "Food",
            //    routeTemplate: "api/nutrition/foods/{foodid}",
            //    defaults: new { controller = "foods", foodid = RouteParameter.Optional }
            //);

            config.Routes.MapHttpRoute(
                name: "Measures",
                routeTemplate: "api/nutrition/foods/{id}/measures/{id}",
                defaults: new { controller = "measures", id = RouteParameter.Optional }

            );

              //  config.Routes.MapHttpRoute(
              //    name: "Measures2",
              //    routeTemplate: "api/nutrition/foods/{id}/measures/{id}",
              //    defaults: new { controller = "measuresv2", id = RouteParameter.Optional }

              //);
            config.Routes.MapHttpRoute(
                name: "Diaries",
                routeTemplate: "api/user/diaries/{diaryid}",
                defaults: new { controller = "diaries", diaryid = RouteParameter.Optional }

             );
            config.Routes.MapHttpRoute(
                name: "DiariesEntries",
                routeTemplate: "api/user/diaries/{diaryid}/entries/{id}",
                defaults: new { controller = "diaryentries", diaryid = RouteParameter.Optional }

            );
            config.Routes.MapHttpRoute(
                name: "DiarySummary",
                routeTemplate: "api/user/diaries/{diaryid}/summary",
                defaults: new { controller = "diarysummary" }

            );

            config.Routes.MapHttpRoute(
              name: "Token",
              routeTemplate: "api/token",
              defaults: new { controller = "Token" }

            );

            // Uncomment the following line of code to enable query support for actions with an IQueryable or IQueryable<T> return type.
            // To avoid processing unexpected or malicious queries, use the validation settings on QueryableAttribute to validate incoming queries.
            // For more information, visit http://go.microsoft.com/fwlink/?LinkId=279712.
            //config.EnableQuerySupport();

            //return Camelcase for Json formats:
            var jsonFormatter = config.Formatters.OfType<JsonMediaTypeFormatter>().FirstOrDefault();
            jsonFormatter.SerializerSettings.ContractResolver = new CamelCasePropertyNamesContractResolver();

            CreateMediaTypes(jsonFormatter);

            // Adding support JSONP using : "webapicontrib.formatting.jsonp" in nugget
            var formatter = new JsonpMediaTypeFormatter(jsonFormatter, "cb");
            config.Formatters.Insert(0, formatter); // Makes API calls in jsonp formatter first

            // Adds a Https requirement for all API calls
            config.Filters.Add(new RequireHttpsAttribute());

            // Adds CORs By adding: "microsoft.aspnet.webapi.cors" in nugget
            var attr = new EnableCorsAttribute("*", "*", "GET"); // Allows entire website to use Cors
            config.EnableCors(attr);

            // Replace the Controller Configuration
            config.Services.Replace(typeof(IHttpControllerSelector),
                new CountingKsControllerSelector(config));

            // Configure Caching/ETag Support using CacheCow Server
            var connString  = ConfigurationManager.ConnectionStrings["DefaultConnection"].ConnectionString;
            var etagStore = new SqlServerEntityTagStore(connString);
            var cacheHandler = new CachingHandler(config, etagStore);
            config.MessageHandlers.Add(cacheHandler);
        }