自动生成默认的200 OK响应,同时指定其他响应类型
根据我希望能够在XML注释中的某些端点上添加404/400错误响应,同时保留所有终点的200个成功响应,包括具有404/400错误响应的端点. 即使指定了错误响应,也可以使Swashbuckle继续自动为所有终点生成200个成功响应吗? 编辑:我添加了一个操作过滤器,以编程添加丢失的200个响应,从而解决了丢失的模型模式,但仍然没有真正回答我的原始问题,即是否有一种方法可以保持Swashbuckle的自动生成200个成功响应 class CustomOperationFilter : IOperationFilter { public void Apply(Operation operation, SchemaRegistry schemaRegistry, ApiDescription apiDescription) { var responses = operation.responses; if (responses
0 2024-03-01
编程技术问答社区
如何使Swagger显示从API返回的对象的例子?
我是第一次创建一组API.这是一种方法: // GET: api/Doors/0 /// /// Get a list of all doors for a given organization. /// /// The Organization ID for which all doors should be retreived. /// [Route("{organizationSys:int}")] public IHttpActionResult Get(int organizationSys) { try { Dictionary parameters = n
0 2024-03-01
编程技术问答社区
根据用户角色列出API
我有一个要求,我想根据用户角色以摇摇欲坠列出API方法. 例如: - 具有基本访问的用户A可以使用有限的API方法. 用户b的用户b可以使用所有列出的API方法. 我不知道该如何实现. 我正在使用Swashbuckle.AspNetCore Version="1.0.0" 解决方案 可能的解决方案: 用不同的组名称在您的Swagger配置中定义几个码头 @Bean public Docket api1() { ... return new Docket(DocumentationType.SWAGGER_2) ... .groupName("api1") ... .paths(PathSelectors.ant("/api/api1Url/**")) .build().apiInfo(metaData());
0 2024-03-01
编程技术问答社区
为插件调用Swagger生成器
我想生成用于插件的Swagger文档. i将API的终点指向插件旋风.在这种情况下,我有一种为特定版本创建文档的方法.加载插件时,所有项目都已经在Swagger工具中注册. (某种程度上,新文档并没有被Swagger中间件所吸引,这就是为什么我需要这种解决方法.) [HttpGet("api/plugins/swaggerdoc/{version}")] public IActionResult GetSwaggerDoc(string version) { SwaggerDocument gen = new SwaggerGenerator(apiDescriptionGroupCollectionProvider, schemaRegistryFactory, Swagger.SwaggerElements.GeneratorOptions.SwaggerGeneratorOptions).GetSwagger(
4 2024-01-08
编程技术问答社区
如何在v5中为Swagger定义一个相对路径?
我正在将.NET Core App从Swashbuckle V4升级到V5.我目前在startup.configureservices中有以下代码,该代码定义相对路径: app.UseSwagger(c => { c.PreSerializeFilters.Add((swaggerDoc, httpReq) => swaggerDoc.BasePath = "/folder/data"); }); 我将其转换为V5很难.我尝试了以下内容,但我看不到在哪里设置路径: c.PreSerializeFilters.Add((swagger, httpReq) => { var paths = new OpenApiPaths(); var pathItem = new OpenApiPathItem(); paths.Add("main", pathItem); swagger.Paths = paths; }); 解决方案 在
10 2024-01-08
编程技术问答社区
swashbuckle在notsupportedException异常中的ASP.NET核心失败
我遵循此示例有关如何在我的ASP.NET Core 2.2项目中添加swashbuckle. 一旦我运行项目,我会收到以下错误: 处理请求时发生了一个未经治疗的例外. notsupportedexception:http方法" get"&path"&path" {id}"由操作-dotnet1.server.controllers.userscontroller.getbyid location -dotnet1.server.controllers.controllers.controllers.controllers.controllers.controllers.controllers.controllers.controllers.controllers.controllers.controllers.getbyid (dotnet1.server),dotnet1.server.controllers.valuescontroller.get (dotnet1.se
4 2024-01-08
编程技术问答社区
有没有人让swashbuckle与.net core 3一起工作过?
我正在尝试使用.NET Core 3为我的REST API生成一个摇摇欲坠的文档3.我在这里搜索了其他问题,似乎找不到任何有效的建议.控制器非常简单,没有摘要,仿制药,所有方法具有HTTP属性等. 我尝试了Swashbuckle V4软件包以及V5 RC2软件包. V4软件包仅在负载上引起.NET Core的运行时例外. V5软件包始终在.json文件中生成null引用异常.控制器已编码并且正常工作,只是向其添加文档.只是想知道Swashbuckle是否与.net Core 3一起使用. //Register the Swagger generator, defining one or more Swagger documents services.AddSwaggerGen(c => { c.SwaggerDoc("v1", new OpenApiInfo { V
0 2024-01-08
编程技术问答社区
如何为Swagger用户界面的[FromQuery]参数定义默认值?
我有一个动作: [HttpGet] [Route("foo")] public ActionResult Foo([FromQuery] MyClass request) { var image = ToImage(WidgetType.MedianSalesPriceSqft, request); return File(image.ToByteArray(), "image/png"); } MyClass下面定义了: public class MyClass { [DefaultValue("90210")] public string Zip { get; set; } [DefaultValue("5361 Doverton Dr")] public string StreetAddress { get; set; } } 当我击中/swagger/index.html并想尝试
8 2024-01-08
编程技术问答社区
Swagger返回"规格中未定义的操作!"
我正在开发.NET Core 3.1 Web API应用程序,并且我盯着屏幕一段时间. 我已经在项目中安装了Swashbuckle.AspNetCore -Version 5.5.0,并且已经制作了以下配置: startup.cs public void ConfigureServices(IServiceCollection services) { services.AddMvc(options => { options.Filters.Add(typeof(DomainExceptionFilter)); options.ModelBinderProviders.Insert(0, new ProviderModelBinder()); }); services.AddSwaggerGen(c => { c.SwaggerDoc("v1", new OpenApiIn
0 2024-01-08
编程技术问答社区
如何为Swagger用户界面的参数定义默认值?
我将集成到.NET Core 2.2 API项目中.一切都很好,我要问的纯粹是为了方便.考虑以下API方法: public Model SomeEstimate(SomeRequest request) { return Manager.GetSomeEstimate(request); } ... public class SomeRequest { public string StreetAddress { get; set; } public string Zip { get; set; } } 当我击中/swagger/index.html并想尝试此API时,我总是必须输入Streetaddress和Zip值. 有没有办法为Streetaddress和Zip提供默认值?此答案建议放置[defaultValue(" value there there")]属性SomeRequest类的每个属性.它可能适用于常规.NET,但与.NET核心不适用
6 2024-01-08
编程技术问答社区
Swashbuckle如何在OpenAPI 3中加入OneOf声明
我有一个可以为2种字符串类型的" A"或" B"的请求对象. 注意:这是我真正想要的更简单的示例.枚举在这里对我不起作用. public class SampleRequest { //Can only be "A" or "B" public string Property1 { get; set; } } 我正在尝试创建一个可以作为OpenAPI" OneOf"属性输出的模式过滤器. https://datatracker.ietf.org/doc/html/draft-fge-json-schema-validation-00#section-5.5.5 https:///swagger.io/docs/规格/data-models/oneof-inof-nof-allof-not/#oneof /a> public class CustomSchemaFilter : ISchemaFilte
0 2024-01-08
编程技术问答社区
改变由Swagger/Swashbuckle导出的属性类型
我的对象具有相当复杂的对象;请注意,在下面的示例中,我大大简化了此对象. 假设以下示例对象: public class Result { public string Name { get; set; } public IpAddress IpAddress { get; set; } } 我已经实现了JsonConverter,而不是(de)将IP序列化为字符串: public class IPAddressConverter : JsonConverter { public override IPAddress Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options) => IPAddress.Parse(reader.GetString()); public ov
2 2024-01-08
编程技术问答社区
如何让swagger在.net core web api中使用自定义swagger文件而不是自动生成的文件?
创建了新的.NET Core 3.1 Web API项目,并配置了Swashbuckle以使用Swagger. 一切正常,但是我需要我的应用程序使用自己的Swagger Spec文件,而不是自动生成文件(\swagger\v1\swagger.json) 我搜索了许多帖子他们在这里没有帮助. 我已经在项目的根路径(带有.csproj的同一目录) 中创建了my-custom-swagger.json文件 startup.cs public void Configure(IApplicationBuilder app, IWebHostEnvironment env) { app.UseStaticFiles(); app.UseSwagger(); // app.UseStaticFiles(new StaticFileOptions //{ // FileProvider
6 2024-01-08
编程技术问答社区
Swagger有没有可能从URL查询字符串中获取授权令牌?
在.NET核心项目中,我添加了一个安全定义(底部的代码),该定义在页面中添加了一个授权按钮,并且用户可以输入API键 - 一切正常. 是否可以在URL中指定API键,以便Swagger自动使用它而不是必须输入它?喜欢/swagger/index.html?authorization=0123456789或这种效果. 现有代码: services.AddSwaggerGen(c => { ... c.AddSecurityDefinition("api key", new ApiKeyScheme() { Description = "Authorization query string expects API key", In = "query", Name = "authorization", Type = "apiKey" }); var requirements = new Dictionary
12 2024-01-08
编程技术问答社区
如何强制Swagger/Swashbuckle附加一个API密钥?
我有一个.NET Core 2.X项目,该项目集成了Swagger and Swashbuckle v4.x.一切都很好. 但是,现在我需要将一个查询字符串附加到以www.foo.com/myendpoint?authorization=APIKEY的形式通过Swagger射击的每个获取的字符串.为此,我在startup.configureservices中有以下内容: services.AddSwaggerGen(c => { c.SwaggerDoc("v1", new Info { Title = "My API", Version = "v1" }); c.AddSecurityDefinition("api key", new ApiKeyScheme() { Description = "Authorization query string expects API key", In = "query", Name =
12 2024-01-08
编程技术问答社区
在Swagger中显示不同的控制器名称
我想以摇摇晃晃的方式更改控制器的名称. 我正在使用.net 5,swashbuckle aspnetcore v6.3.1,并具有此启动代码: public void ConfigureServices(IServiceCollection services) { // code omitted for brevity services.AddSwaggerGenNewtonsoftSupport(); services.AddSwaggerGen(x => x.EnableAnnotations()); } 控制器: [Route("v1/taggroups")] [ApiController] public class ProfileGroupTypesController : ControllerBase { [HttpPost] [SwaggerOperation(OperationId = "Add Tag Grou
4 2024-01-08
编程技术问答社区
隐藏参数(Swagger)(Swashbuckle)
我有一个C#.NET 5.0 ASP.NET CORE WEB API应用程序,其中包含"启用OpenAPI支持".我想在下面的示例中隐藏optional参数,从Swagger页面上显示的内容.我发现了许多有关隐藏属性或控制器的帖子,但是这些解决方案似乎都不适用于给定代码中的参数: [HttpGet] [Route("search")] [Authorize] public async Task Search(string query, string optional = "") { return OK(); } 解决方案 您可以创建一个自定义Attibute和一个从swashbuckle.aspnetcore.swaggergen.ioperationFilter继承的操作过滤器,以从Swagger.json Generation中排除所需的参数 public class OpenApiParameterIgnoreAttribut
2 2024-01-08
编程技术问答社区
Swashbuckle C# swagger插件如何默认使用我自己的个人swagger.json,而不是依赖它生成的swagger.json?
我在一个项目上遇到了一个问题,由于各种原因,我们无法依靠Swashbuckle产生招摇.我一直在整个地方搜索,但无法弄清楚如何配置它,以便当人们在家庭URL中键入/Swagger时,它会默认为我的Swagger.json文件,而不是由Swashbuckle自动生成的文件,对我们不起作用.用户被迫通过在UI顶部的" Swagger URL栏"中键入FilePath来手动更改矿井,这导致了很多混乱. 任何人都可以共享执行此操作所需的代码/设置​​吗? (假设我可以)或建议一个更好的Swagger库(有关如何实施的清晰文档),则如果不可能?我已经搜索了大量文章,试图解决问题,但无济于事.我们已经完成了Swagger.json文件,我们只需要一种可行的方法即可在用户键入/Swagger时使其成为默认文件. 我们当前的SwaggerConfig主要只是默认设置,看起来像: public class SwaggerConfig { public static void Re
2 2024-01-07
编程技术问答社区
将Swagger UI添加到自定义的.NET Web API中
我想将Swagger UI集成到我的C#.NET Web API项目中.这与传统的Web API项目不同,您可以在该项目中安装诸如Swashbuckle之类的工具,然后拾取控制器类中定义的HTTP路由并创建UI. . 我拥有的是一个自定义实现,它为不同路由生成OpenAPI/Swagger 3.0 YAML文件. 我在通用控制器文件中定义了一个路由,该文件接受变量 - http://localhost:8000/myapp/swagger/{document_name} document_name是一个变量.我的代码采用此变量并基于此值生成自定义文档. http://localhost:8000/myapp/swagger/sedan http://localhost:8000/myapp/swagger/suv 在上面的示例中,我的代码将返回轿车和SUV的其他开放API规格. 截至目前,URL简单地返回纯文本的打开API 3.0 YAML规格.我想做
4 2024-01-06
编程技术问答社区
需要在.NET Core API中添加现有模型(不是内联)
我正在为我的.NET CORE 6 API生成Swagger文档.我有一些错误模型将由我的网关返回.这些未在我的任何API端点中使用/返回.我想将这些模型添加到Swagger Document架构集合中.如果我遵循在线方式,我可以成功添加它们.有没有办法将现有模型包含在Swagger Schema Collection中? 我还想将webhook模型和示例包括在无内线选项的情况下. . 感谢您的时间. 解决方案 您可以按以下操作将模型添加到模型集合中. 创建自定义文档过滤器 public class CustomDocumentFilter : IDocumentFilter { public void Apply(OpenApiDocument swaggerDoc, DocumentFilterContext context) { context.SchemaGenerator.GenerateSchema(typeo
2 2024-01-06
编程技术问答社区