public HttpRouteBootstrapper( HttpRouteCollection routes, ApiVersionRouteConstraint versionConstraint, ILatestApiVersion version) { _routes = routes; _versionConstraint = versionConstraint; _version = version; }
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); }
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); }