当前位置: 首页 > 知识库问答 >
问题:

使用ASP. NET Core Web API重命名Swashuckle 6(Swagger)中的模型

卫浩瀚
2023-03-14

我正在使用带有ASP. NET Core Web API的Swashuckle 6(Swagger)。我的模型有DTO作为后缀,例如,

public class TestDTO {
    public int Code { get; set; }
    public string Message { get; set; }
}

如何在生成的留档中将其重命名为“测试”?我尝试添加一个带有名称的数据合同属性,但没有帮助。

[HttpGet]
public IActionResult Get() {
  //... create List<TestDTO>
  return Ok(list);
}

共有2个答案

阙星渊
2023-03-14

来自@ultravel ocity的答案对我不太起作用。错误就像“‘响应'1’已被使用”。我不知道确切的原因是什么,但我想是关于继承/泛型的(因为我返回了分页响应)。

根据@ultravelocity的问答,我为开发了一个可能的解决方案。net 5(可能也适用于asp.net core 2.c/3.d)解决了这个问题
步骤:

  1. 添加自定义SchemaId-Strategy,就像@ultravel的一样
a.CustomSchemaIds(schemaIdStrategy);
private static string schemaIdStrategy(Type currentClass)
{
    string customSuffix = "Response";
    var tmpDisplayName = currentClass.ShortDisplayName().Replace("<", "").Replace(">", "");
    var removedSuffix = tmpDisplayName.EndsWith(customSuffix) ? tmpDisplayName.Substring(0, tmpDisplayName.Length - customSuffix.Length) : tmpDisplayName;
    return removedSuffix;
}
苏志
2023-03-14

我想出来了。。。与这里的答案类似:Swashbucklk重命名模型中的数据类型

唯一的区别是该属性现在称为CustomSchemaIds,而不是SchemaId:

options.CustomSchemaIds(schemaIdStrategy);

我没有查看DataContract属性,而是让它删除“DTO”:

private static string schemaIdStrategy(Type currentClass) {
    string returnedValue = currentClass.Name;
    if (returnedValue.EndsWith("DTO"))
        returnedValue = returnedValue.Replace("DTO", string.Empty);
    return returnedValue;
}
 类似资料:
  • 对我来说,为json数组编写swagger模型似乎非常简单,例如,如果我有这个数组: 我会为它写以下大摇大摆的模型: 然而,我有以下几点: 我如何为这一个写模型? 提前谢了。

  • 问题内容: 我想更改模型中特定字段的名称: 应更改为: 使用South进行此操作最简单的方法是什么? 问题答案: 你可以使用该功能。 的第一个参数是表名,因此记住如何创建表名很重要: Django自动从你的模型类和包含它的应用程序的名称中派生数据库表的名称。通过将模型的“应用程序标签”(即你在manage.py startapp中使用的名称)与模型的类名称连接在一起,并在其之间加下划线,来构造模型

  • 我有一个原型项目,它的外观如下所示(有两个模块,和): 并且,当我使用工件id为“infra”的原型生成一个项目时,它应该生成如下结构: 不起作用的是,在父pom.xml中,我包含了以下模块: 这些模块条目不会被重命名为类似于(在生成时): 这就是我想要的。 知道怎么做吗,谢谢。 更新我在这里按要求添加元数据xml文件,但我不想修改archetype-metadata.xml文件。因为我想使用cr

  • 问题内容: 我一直在South的网站,Google和SO上寻找答案,但是找不到简单的方法来做到这一点。 我想使用South重命名Django模型。说你有以下几点: 并且你想要将转换为,即 为简单起见,我只是尝试将名称从更改为,但现在忽略其中的成员。 使用South进行此操作最简单的方法是什么? 我可能可以进行数据迁移,但这似乎很复杂。 编写一个自定义迁移,例如,但是在这种情况下我不确定如何修复外键

  • 我正在使用命名实体重新识别器查看斯坦福corenlp。我有不同类型的输入文本,我需要将其标记到我自己的实体中。所以我开始训练我自己的模型,但它似乎不起作用。 例如:我的输入文本字符串是“关于丰田陆地巡洋舰1956-1987黄金投资组合的49篇杂志文章之书”http://t.co/EqxmY1VmLg http://t.co/F0Vefuoj9Q" 我通过这些例子来训练自己的模型,只寻找一些我感兴趣

  • 问题内容: 我们可以重命名文件说来? 如果存在,它将重命名吗? 如何将其重命名为已经存在的test1.txt文件,以便将test.txt的新内容添加到其中以供以后使用? 问题答案: 从http://exampledepot.8waytrips.com/egs/java.io/RenameFile.html复制 追加到新文件: