【问题标题】:Swagger Codegen convert "format: time" to non StringSwagger Codegen 将“格式:时间”转换为非字符串
【发布时间】:2018-07-09 11:55:01
【问题描述】:

我正在尝试自定义 OpenAPI 规范字符串格式之间的映射

  • 时间
  • 日期
  • 日期时间

  • 偏移时间
  • 本地日期
  • 即时

分别。

我目前正在使用我自己的扩展 JavaJerseyServerCodegen 的自定义服务器生成器,因此我进行了这些更改并且一切正常

@Override
public void processOpts()
{
  super.processOpts();
  typeMapping.put("DateTime", "Instant");
  typeMapping.put("date", "LocalDate");

  importMapping.put("Instant", "java.time.Instant");
  importMapping.put("LocalDate", "java.time.LocalDate");
 ...

问题在于时间格式,因为 codegen 没有默认定义这种格式,所以我可以“覆盖”它。
有可能做我想做的事吗?如果有怎么办?

【问题讨论】:

    标签: java swagger swagger-codegen


    【解决方案1】:

    在头撞了很多之后,我尝试了 KISS 方法并得到了以下解决方案:

    @Override
    public String getSwaggerType(final Property property)
    {
      if ((property instanceof StringProperty) && ("time".equals(property.getFormat())))
      {
        return "OffsetTime";
      }
      else
      {
        return super.getSwaggerType(property);
      }
    }
    

    现在我可以简单地执行以下操作

    @Override
    public void processOpts()
    {
      super.processOpts();
      typeMapping.put("DateTime", "Instant");
      typeMapping.put("date", "LocalDate");
      typeMapping.put("time", "OffsetTime");
    
      importMapping.put("Instant", "java.time.Instant");
      importMapping.put("LocalDate", "java.time.LocalDate");
      importMapping.put("OffsetTime", "java.time.OffsetTime");
      ...
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-08-31
      • 2016-02-19
      • 2015-11-16
      • 1970-01-01
      相关资源
      最近更新 更多