public HttpRouteBootstrapper(
     HttpRouteCollection routes,
     ApiVersionRouteConstraint versionConstraint,
     ILatestApiVersion version)
 {
     _routes            = routes;
     _versionConstraint = versionConstraint;
     _version           = version;
 }
Esempio n. 2
0
        public static void UseSwagger(this HttpConfiguration httpConfiguration)
        {
            httpConfiguration.EnableSwagger(c =>
            {
                c.MultipleApiVersions((apiDesc, version) =>
                {
                    //移除version参数,并替换URL中的版本参数,便于使用Swaggger页面测试接口
                    var versionPra = apiDesc.ParameterDescriptions.FirstOrDefault(p => p.Name == ApiVersionKey);
                    if (versionPra != null)
                    {
                        apiDesc.ParameterDescriptions.Remove(versionPra);
                    }

                    ApiVersionRouteConstraint versionConstraint = null;
                    if (apiDesc.Route.Constraints.ContainsKey(ApiVersionKey))
                    {
                        versionConstraint = apiDesc.Route.Constraints[ApiVersionKey] as ApiVersionRouteConstraint;
                        if (versionConstraint != null)
                        {
                            apiDesc.RelativePath = apiDesc.RelativePath.Replace($"{{{ApiVersionKey}}}", version);
                        }
                    }

                    return(versionConstraint != null);
                },
                                      vc =>
                {
                    vc.Version("1", "API V1");
                });

                c.GroupActionsBy(apiDesc => apiDesc.GetControllerAndActionAttributes <ApiGroupAttribute>().Any() ?
                                 apiDesc.GetControllerAndActionAttributes <ApiGroupAttribute>().First().GroupName + "_" +
                                 apiDesc.GetControllerAndActionAttributes <ApiGroupAttribute>().First().Useage : "无模块归类");

                c.ResolveConflictingActions(apiDescriptions => apiDescriptions.First());
                var baseDirectory = AppDomain.CurrentDomain.BaseDirectory;

                var commentsStock     = "Bin//AbpSignalrApi.xml";
                var commentsStockFile = Path.Combine(baseDirectory, commentsStock);
                c.IncludeXmlComments(commentsStockFile);
            })
            .EnableSwaggerUi(c =>
            {
                c.InjectJavaScript(Assembly.GetExecutingAssembly(), "Snw.Compass.Web.Scripts.swagger_lang.js");
                //swagger集成权限验证
                var thisAssembly = typeof(SwaggerConfig).Assembly;
                c.InjectJavaScript(thisAssembly, authFile);
                c.DisableValidator();
            });

            //RegisterServices(httpConfiguration);
        }
Esempio n. 3
0
        public void read_should_retrieve_version_from_url()
        {
            // arrange
            var requestedVersion = "2";
            var constraint       = new ApiVersionRouteConstraint();
            var reader           = new UrlSegmentApiVersionReader();
            var request          = RequestAfterApiVersionConstraintHasBeenMatched(requestedVersion, reader);
            var httpContext      = request.HttpContext;
            var route            = default(IRouter);
            var routeData        = ((RoutingFeature)httpContext.Features[typeof(IRoutingFeature)]).RouteData;

            constraint.Match(httpContext, route, "version", routeData.Values, IncomingRequest);

            // act
            var version = reader.Read(request);

            // assert
            version.Should().Be(requestedVersion);
        }