我正在使用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完成。
首先创建您的基本响应类。
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