使用Swashbuckle.Swagger手动添加端点

Maz*_*zaM 4 c# swagger swashbuckle openapi

我正在使用CMS。因此,当我转到“ / painter”时,其路由到“ JobController”。/ plumber也被路由到'JobController'。除此之外,它是MVC而不是WebAPI,因此大张旗鼓不会发现它,这是可以理解并且很好的。

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

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

那么,我是否可以添加一个完全伪造的终结点-仅在招摇的UI中在设计人员和开发人员之间只有一个用户界面?

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

Hel*_*eda 5

这是一个使用swashbuckle创建Fake端点的选项IDocumentFilter

    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));
            }
        }
    }
Run Code Online (Sandbox Code Playgroud)

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

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