gpt4 book ai didi

asp.net - 在 .Net Core 中使用 Swagger 在 API 方法中设置自定义路径前缀

转载 作者:行者123 更新时间:2023-12-02 20:09:47 26 4
gpt4 key购买 nike

我想在 .Net Core API 方法中使用 swagger 添加我的自定义路径前缀

例如,我的 API 方法声明如下:

[Route("api/v1/Customer")]
[HttpGet]
public async Task<IActionResult> Customer()
{
// some implementation
return Ok();
}

目前,如果我使用 http://localhost:50523/api/v1/Customer 调用 API它工作得很好。

现在,我想添加一些自定义路径前缀。例如。 /some/custom/path/ 在实际的 API 方法路径之前。这意味着——如果我使用 http://localhost:50523/some/custom/path/api/v1/Customer 调用 API它应该工作。

我想在 .Net 核心中使用 Swagger 实现这一点,我不想在操作方法级别更改 API 路径,因为我编写了数百个 API 方法,我不想更改每个操作方法的 URL。

任何帮助将不胜感激。

最佳答案

在 .Net 5.0 中

public class PathPrefixInsertDocumentFilter : IDocumentFilter
{
private readonly string _pathPrefix;

public PathPrefixInsertDocumentFilter(string prefix)
{
this._pathPrefix = prefix;
}

public void Apply(OpenApiDocument swaggerDoc, DocumentFilterContext context)
{
var paths = swaggerDoc.Paths.Keys.ToList();
foreach (var path in paths)
{
var pathToChange = swaggerDoc.Paths[path];
swaggerDoc.Paths.Remove(path);
swaggerDoc.Paths.Add($"{_pathPrefix}{path}", pathToChange);
}
}
}

应用过滤器

services.AddSwaggerGen(options =>
{
options.SwaggerDoc("v1", new Info {Title = "MyApp", Version = "v1"});

... other setup

options.DocumentFilter<PathPrefixInsertDocumentFilter>("api");
});

关于asp.net - 在 .Net Core 中使用 Swagger 在 API 方法中设置自定义路径前缀,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53849042/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com