我使用services.AddSwaggerGen()
来创建一个swagger.json:
services.AddSwaggerGen(c =>
{
c.CustomOperationIds(apiDesc => {
if (apiDesc.TryGetMethodInfo(out var methodInfo)) {
if (methodInfo.GetCustomAttributes(typeof(HttpMethodAttribute)).FirstOrDefault() is HttpMethodAttribute attr) {
if (!string.IsNullOrEmpty(attr.Template)) {
return attr.Template;
}
}
}
return $"{apiDesc.HttpMethod.Substring(0, 1)}{apiDesc.HttpMethod.Substring(1, apiDesc.HttpMethod.Length -1).ToLower()}";
});
c.SwaggerDoc("v1", new OpenApiInfo() {
Title = "Time API",
Version = "v1",
});
});
字符串
这是工作到目前为止.但现在,我有一个DTO,这是不使用explizit在控制器.而这个DTO是不是作为一个对象添加到swagger.json.是否有可能配置,这DTO也将包括在swagger.json?
1条答案
按热度按时间sg3maiej1#
我认为你应该在DTO中添加一个其他地方没有引用的属性。请按照文档的说明添加
Swashbuckle.AspNetCore.Annotations
包,然后将SwaggerSchemaAttribute
添加到你的DTO中,如下所示:字符串
请注意,使用属性来描述控制器和模型是一种很好的做法,因为它们将被添加到嵌入式网页以及
swagger.json
文件中