在 .NET 中动态生成响应的一部分时生成 Swagger 响应模型

Producing Swagger response model when a part of the response is being dynamically genereated in .NET

我正在使用 swashbuckle 4.1。

我有一个通用的响应类型:

{
statuscode:int
message:""
result: dynamically determined wrt request`
count: int`
}

在这里, 结果参数是在 运行 时间内为每个端点动态确定的。

我如何指定响应类型,以便为结果的每个端点提供相应的模型。

通过声明语句。

public JsonResult<Response> endpointformodeltypeA(){
---
---
}

它的响应是:

 {
    statuscode:int
    message:""
    result: modelA
    count: int`
    }

result:modelA 是动态确定的。
我将如何通过声明性陈述大摇大摆地定义它。

您可以通过 Generics 完成。

首先创建您的基本响应 class。

public class SomeBaseResponse<T>
{
        [JsonProperty("statuscode")]
        public int StatusCode { get; set; }

        [JsonProperty("message")]
        public string Message { get; set; }

        [JsonProperty("result")]
        public T Result { get; set; }

        [JsonProperty("count")]
        public int Count { get; set; }
}

然后您可以通过控制器操作class响应。
这是一个例子:

public SomeBaseResponse<SomeModel> FirstControllerAction(){
    // It can be anything else than SomeModel

    return new SomeBaseResponse<SomeModel> {
         StatusCode = 10,
         Message = "Success!",
         Result = new SomeModel(),
         Count = 1
    };
}

您可以使用不同的通用类型创建任意数量的端点。
这也有助于使您的回答具有概括性和易于解析的能力。

Swagger 会生成这样的东西。
(这不是我们创建的模型的实际表示,它只是一个示例!)
Click here to view screenshot