java OpenAPI生成器maven插件-如何定义自定义路径

vlurs2pr  于 2023-03-28  发布在  Java
关注(0)|答案(3)|浏览(205)

我正在使用OpenAPI生成器Maven插件6.4.0版本。我面临两个问题。
1.在swagger文件中定义服务器URL,当我生成代码时,@RequestMapping具有服务器URL的基本路径,但我不想使用此路径,也无法更改swagger文件。
1.我不想使用从生成的代码创建的测试文件夹。下面是我使用的属性。

<plugin>
             <groupId>org.openapitools</groupId>
             <artifactId>openapi-generator-maven-plugin</artifactId>
             <version>6.4.0</version>
             <executions>
                 <execution>
                     <id>execution-services</id>
                     <goals>
                         <goal>generate</goal>
                     </goals>
                     <configuration>
                         <inputSpec>src/main/resources/openapi/services_swagger.yaml</inputSpec>
                         <generatorName>spring</generatorName>
                         <generateSupportingFiles>true</generateSupportingFiles>
                         <generateApiTests>false</generateApiTests>
                         <generateModelTests>false</generateModelTests>
                         <generateApis>true</generateApis>
                         <generateModels>true</generateModels>
                         <library>spring-boot</library>
                         <configOptions>
                             <sourceFolder>src/main/java</sourceFolder>
                             <apiPackage>com.example.api</apiPackage>
                             <modelPackage>com.example.model</modelPackage>
                             <generateTestCode>false</generateTestCode>
                             <useTags>true</useTags>
                         </configOptions>
                         <additionalProperties>
                             <java11>true</java11>
                         </additionalProperties>
                     </configuration>
                 </execution>
             </executions>
         </plugin>
okxuctiv

okxuctiv1#

警告:这将适用于您拥有的价格数组结构,但不适用于作为排序键的modelCode。

const data = [
   {
      "modelId":2,
      "modelCode":"model2",
      "price":[
         {
            "PRICE_CODE1":100.01
         },
         {
            "PRICE_CODE2":200.68
         },
         {
            "PRICE_CODE3":300.0
         }
      ]
   },
   {
      "modelId":1,
      "modelCode":"model1",
      "price":[
         {
            "PRICE_CODE1":225.01
         },
         {
            "PRICE_CODE2":247.68
         },
         {
            "PRICE_CODE3":298.0
         }
      ]
   }
]

function sortData(sortKeys = []) {
  data.sort((a,b) => {
    for (let sortKey of sortKeys) {
      const priceObjA = a.price.find(x => sortKey in x);
      const priceObjB = b.price.find(x => sortKey in x);
      const priceA = priceObjA && priceObjA[sortKey] || 0;
      const priceB = priceObjB && priceObjB[sortKey] || 0;
      const result = priceA - priceB;
      if (result !== 0) {
        return result;
      }
    }
    // fallback for equality
    return 0;
  })
}

sortData(['PRICE_CODE1']);
console.log(JSON.stringify(data,null,2));

sortData(['PRICE_CODE2']);
console.log(JSON.stringify(data,null,2));

sortData(['PRICE_CODE3']);
console.log(JSON.stringify(data,null,2));
uinbv5nw

uinbv5nw2#

arr.sort(sortByMultipleKey(['PRICE_CODE1','modelCode']))
你的sortByMultipleKey接受一个键列表,每个键描述 * 一个 * 键。这不能描述prices下对象的PRICE_CODE1字段。
您实际上是在尝试提出一种语法来描述分层数据中的任意位置。
而不是这样做,使用Javascript本身来定义如何找到下一个比较字段!传递可以解析字段并迭代这些字段的函数。
下面,我将定义两个函数,第一个函数将从prices的元素中提取第一个PRICE_CODE1

function(d) {
    for (i = 0; i < d.price.length; d++) {
      if ("PRICE_CODE1" in d.price[i]) {
        return d.price[i].PRICE_CODE1
      }
    }
    return undefined
  }

modelCode的比较简单:

function(d) {
    return d.modelCode
  }

我还添加了一个具有相同PRICE_CODE1的第三个模型,以便modelCode也是相关的。

function sortByMultiple(field_funcs) {
  return function(a, b) {
    for (i = 0; i < field_funcs.length; i++) {
      fa = field_funcs[i](a)
      fb = field_funcs[i](b)
      console.log("Comparing " + fa + " and " + fb)
      if (fa < fb) return -1;
      if (fa > fb) return 1;
      if (i + 1 == field_funcs.length) return 0
    }
  }
}
var data = [{
    "modelId": 2,
    "modelCode": "model2",
    "price": [{
        "PRICE_CODE1": 100.01
      },
      {
        "PRICE_CODE2": 200.68
      },
      {
        "PRICE_CODE3": 300.0
      }
    ]
  },
  {
    "modelId": 1,
    "modelCode": "model1",
    "price": [{
        "PRICE_CODE1": 225.01
      },
      {
        "PRICE_CODE2": 247.68
      },
      {
        "PRICE_CODE3": 298.0
      }
    ]
  },
  {
    "modelId": 3,
    "modelCode": "model3",
    "price": [{
        "PRICE_CODE1": 225.01
      },
      {
        "PRICE_CODE2": 247.68
      },
      {
        "PRICE_CODE3": 298.0
      }
    ]
  }
]

data.sort(sortByMultiple([
  function(d) {
    for (i = 0; i < d.price.length; d++) {
      if ("PRICE_CODE1" in d.price[i]) {
        return d.price[i].PRICE_CODE1
      }
    }
    return undefined
  },
  function(d) {
    return d.modelCode
  }
]))
console.log(data)
gab6jxml

gab6jxml3#

你可以使用lodash库:

_.orderBy( data, [c => c.price[0].PRICE_CODE1, "modelCode"], ["asc", "asc"]);

相关问题