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

问题描述 投票:0回答:1

我正在使用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是动态确定的。我将如何通过声明性声明大刀阔斧地定义这一点。

asp.net asp.net-core swagger asp.net-core-webapi swashbuckle
1个回答
1
投票

您可以通过Generics完成。

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

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; }
}

然后,您可以通过控制器操作对此类做出响应。这是一个例子:

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

© www.soinside.com 2019 - 2024. All rights reserved.