gpt4 book ai didi

c# - 使用 Swashbuckle.Swagger 手动添加端点

转载 作者:太空狗 更新时间:2023-10-30 01:00:11 25 4
gpt4 key购买 nike

我正在使用 CMS。所以当我去即'/painter'时,它被路由到'JobController'。/plumber 也被路由到“JobController”。此外它是 MVC 而不是 WebAPI,所以 swagger 不会发现它,这是可以理解的并且很好。

但我有一个用例,如果我访问/pianter?json=1 它返回 json 而不是 HTML。

因此,作为 API UI,我们希望公开这个“假”端点,这样设计人员就可以看到输出模型。

那么我是否可以添加一个完全虚假的端点 - 只是为了在 swagger UI 中的设计人员和开发人员之间拥有一个单一的用户界面?

除了拥有可视化 UI 之外,我们还想生成一些基于 openapi 标准的 TypeScript。

最佳答案

这是一个使用 IDocumentFilter 创建带有 swashbuckle 的假端点的选项:

    private class DocumentFilterAddFakes : IDocumentFilter
{
private PathItem FakePathItem(int i)
{
var x = new PathItem();
x.get = new Operation()
{
tags = new[] { "Fake" },
operationId = "Fake_Get" + i.ToString(),
consumes = null,
produces = new[] { "application/json", "text/json", "application/xml", "text/xml" },
parameters = new List<Parameter>()
{
new Parameter()
{
name = "id",
@in = "path",
required = true,
type = "integer",
format = "int32"
}
},
};
x.get.responses = new Dictionary<string, Response>();
x.get.responses.Add("200", new Response() { description = "OK", schema = new Schema() { type = "string" } });
return x;
}

public void Apply(SwaggerDocument swaggerDoc, SchemaRegistry schemaRegistry, IApiExplorer apiExplorer)
{
for (int i = 0; i < 10; i++)
{
swaggerDoc.paths.Add("/Fake/" + i + "/{id}", FakePathItem(i));
}
}
}

这是这样的结果: http://swashbuckletest.azurewebsites.net/swagger/ui/index#/Fake

其背后的完整代码在github上: https://github.com/heldersepu/SwashbuckleTest/blob/master/Swagger_Test/App_Start/SwaggerConfig.cs#L316

关于c# - 使用 Swashbuckle.Swagger 手动添加端点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48668107/

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