/// <summary>Generates the Swagger specification.</summary> /// <param name="context">The context.</param> /// <returns>The Swagger specification.</returns> protected virtual string GenerateSwagger(HttpContext context) { if (_swaggerJson == null) { lock (_lock) { if (_swaggerJson == null) { var generator = new WebApiToSwaggerGenerator(_settings, _schemaGenerator); var service = generator.GenerateForControllers(_controllerTypes); service.Host = context.Request.Host.Value ?? ""; service.Schemes.Add(context.Request.Scheme == "http" ? SwaggerSchema.Http : SwaggerSchema.Https); service.BasePath = context.Request.PathBase.Value?.Substring(0, context.Request.PathBase.Value.Length - _settings.MiddlewareBasePath?.Length ?? 0) ?? ""; foreach (var processor in _settings.DocumentProcessors) { processor.Process(service); } #pragma warning disable 618 _settings.PostProcess?.Invoke(service); #pragma warning restore 618 _swaggerJson = service.ToJson(); } } } return(_swaggerJson); }
/// <summary>Generates the Swagger specification.</summary> /// <param name="context">The context.</param> /// <returns>The Swagger specification.</returns> protected virtual string GenerateSwagger(IOwinContext context) { if (_swaggerJson == null) { lock (_lock) { if (_swaggerJson == null) { try { var generator = new WebApiToSwaggerGenerator(_settings, _schemaGenerator); var service = generator.GenerateForControllers(_controllerTypes); service.Host = context.Request.Host.Value ?? ""; service.Schemes.Add(context.Request.Scheme == "http" ? SwaggerSchema.Http : SwaggerSchema.Https); service.BasePath = context.Request.PathBase.Value?.Substring(0, context.Request.PathBase.Value.Length - _settings.MiddlewareBasePath?.Length ?? 0) ?? ""; _settings.PostProcess?.Invoke(service); _swaggerJson = service.ToJson(); } catch (Exception exception) { _swaggerJson = exception.ToString(); } } } } return(_swaggerJson); }
public static string ExportController(IEnumerable <Type> controllers, APIConfig config, string swaggerTitle) { var settings = new AssemblyTypeToSwaggerGeneratorSettings(); // dll路径 settings.ApiSetting = new WebApiToSwaggerGeneratorSettings { Title = swaggerTitle, // action方法名提取 ActionPathRegex = config.ActionPathRegex, // 控制器类名提取 ControllerPathRegex = config.ControllerPathRegex, // 命名空间提取到module NameSpacePathRegex = config.NameSpacePathRegex, // 解析时是否忽略 SwaggerIgnoreAttribute = config.SwaggerIgnoreAttribute, // verb属性: post,get,put等 VerbAttribute = config.VerbAttribute, // 根据此参数的属性是否存在, 值判断参数是否可选 RequiredParemeterAttribute = config.RequiredParemeterAttribute }; var generator = new WebApiToSwaggerGenerator(settings.ApiSetting); var doc = generator.GenerateForControllers(controllers); return(doc.ToJson()); }
/// <summary>Generates the Swagger specification.</summary> /// <param name="context">The context.</param> /// <returns>The Swagger specification.</returns> protected virtual string GenerateSwagger(IOwinContext context) { if (_swaggerJson == null) { lock (_lock) { if (_swaggerJson == null) { try { var generator = new WebApiToSwaggerGenerator(_settings, _schemaGenerator); var document = generator.GenerateForControllers(_controllerTypes); document.Host = context.Request.Host.Value ?? ""; document.Schemes.Add(context.Request.Scheme == "http" ? SwaggerSchema.Http : SwaggerSchema.Https); document.BasePath = context.Request.PathBase.Value?.Substring(0, context.Request.PathBase.Value.Length - _settings.MiddlewareBasePath?.Length ?? 0) ?? ""; _settings.PostProcess?.Invoke(document); _swaggerJson = document.ToJson(); } catch (Exception exception) { _swaggerJson = exception.ToString(); } } } } return _swaggerJson; }
public IActionResult Generate() { var settings = new WebApiToSwaggerGeneratorSettings { DefaultUrlTemplate = "api/{controller}/{action}/{id}", DefaultPropertyNameHandling = PropertyNameHandling.CamelCase }; var generator = new WebApiToSwaggerGenerator(settings); var controllers = typeof(Ng2GenerateController).GetTypeInfo().Assembly.GetTypes() .Where(t => typeof(Controller).IsAssignableFrom(t)) .ToList(); var document = generator.GenerateForControllers(controllers); //var json = document.ToJson(); //return Content(document.ToJson()); var typescriptGeneratorSettings = new SwaggerToTypeScriptClientGeneratorSettings() { ClassName = "{controller}Client", Template = TypeScriptTemplate.Angular2, GenerateClientClasses = true, GenerateClientInterfaces = true, GenerateDtoTypes = true, TypeScriptGeneratorSettings = new TypeScriptGeneratorSettings() { TypeStyle = TypeScriptTypeStyle.Interface, //TypeNameGenerator = new MyTypeNameGenerator(), } }; var tsGenerator = new SwaggerToTypeScriptClientGenerator(document, typescriptGeneratorSettings); var typescript = tsGenerator.GenerateFile(); typescript = @" // this is file generated by hitting the /swagger/ng2 endpoint " + typescript; // hack! typescript = typescript.Replace("return <Observable<any>><any>Observable.throw(e);", "return <Observable<any>><any>Observable.throw(response);"); typescript = typescript.Replace("return <Observable<UserProfileVm>><any>Observable.throw(e)", "return <Observable<any>><any>Observable.throw(response)"); // write typescript to file under ng app var webRoot = _env.WebRootPath; var file = System.IO.Path.Combine(webRoot, @"..\ClientApp\app\Right4MeClient.ts"); System.IO.File.WriteAllText(file, typescript); return(Content(typescript)); }
/// <exception cref="InvalidOperationException">No assembly paths have been provided.</exception> internal string GenerateForControllers(IEnumerable <string> controllerClassNames, string settingsData) { var settings = JsonConvert.DeserializeObject <WebApiAssemblyToSwaggerGeneratorSettings>(settingsData); RegisterReferencePaths(GetAllReferencePaths(settings)); IEnumerable <Type> controllers = GetControllerTypes(controllerClassNames, settings); var generator = new WebApiToSwaggerGenerator(settings); return(generator.GenerateForControllers(controllers).ToJson()); }
private string GenerateSwagger(HttpContext context) { if (_swaggerJson == null) { lock (_lock) { if (_swaggerJson == null) { var generator = new WebApiToSwaggerGenerator(_settings); var service = generator.GenerateForControllers(_controllerTypes); _settings.PostProcess?.Invoke(service); _swaggerJson = service.ToJson(); } } } return(_swaggerJson); }
private string GenerateSwagger(IOwinContext context) { if (_swaggerJson == null) { lock (_lock) { if (_swaggerJson == null) { var generator = new WebApiToSwaggerGenerator(_settings); var service = generator.GenerateForControllers(_controllerTypes); _settings.SwaggerServiceTransformer?.Transform(service); _swaggerJson = service.ToJson(); } } } return(_swaggerJson); }
internal string GenerateForAssemblyControllers(string assemblyPath, string urlTemplate, string jsonSchemaGeneratorSettingsData) { var jsonSchemaGeneratorSettings = JsonConvert.DeserializeObject<JsonSchemaGeneratorSettings>(jsonSchemaGeneratorSettingsData); var assembly = Assembly.LoadFrom(assemblyPath); var controllers = assembly.ExportedTypes .Where(t => t.InheritsFrom("ApiController")).ToArray(); var generator = new WebApiToSwaggerGenerator(urlTemplate, jsonSchemaGeneratorSettings); return generator.GenerateForControllers(controllers).ToJson(); }
internal string GenerateForAssemblyControllers(string settingsData) { var settings = JsonConvert.DeserializeObject<WebApiAssemblyToSwaggerGeneratorSettings>(settingsData); var assembly = Assembly.LoadFrom(settings.AssemblyPath); var controllers = assembly.ExportedTypes .Where(t => t.InheritsFrom("ApiController") || t.InheritsFrom("Controller")).ToArray(); var generator = new WebApiToSwaggerGenerator(settings); return generator.GenerateForControllers(controllers).ToJson(); }
/// <exception cref="InvalidOperationException">No assembly paths have been provided.</exception> internal string GenerateForControllers(IEnumerable<string> controllerClassNames, string settingsData) { var settings = JsonConvert.DeserializeObject<WebApiAssemblyToSwaggerGeneratorSettings>(settingsData); RegisterReferencePaths(GetAllReferencePaths(settings)); IEnumerable<Type> controllers = GetControllerTypes(controllerClassNames, settings); var generator = new WebApiToSwaggerGenerator(settings); return generator.GenerateForControllers(controllers).ToJson(); }
internal string GenerateForControllers(IEnumerable<string> controllerClassNames, string settingsData) { var settings = JsonConvert.DeserializeObject<WebApiAssemblyToSwaggerGeneratorSettings>(settingsData); var assembly = Assembly.LoadFrom(settings.AssemblyPath); var controllers = controllerClassNames.Select(c => assembly.GetType(c)); var generator = new WebApiToSwaggerGenerator(settings); return generator.GenerateForControllers(controllers).ToJson(); }