Description我有一个来自spring服务器的公开文件,我正在使用这个脚本生成一个类型记录角客户机
openapi生成器-cli生成-g类型记录-角-i ./src/app/data/open-api.json -o ./src/app/data/build/openapi
系统中有重复的api名称。
简单结构
Controller1 :得到,列表,删除,.Controller2 :得到,列表,删除,..
生成的类如下所示
Controller1Service{
public get1 ....
public list1 .....
}
Controller2Service{
public get2 ....
public list2 .....
}但是这些函数在同一个控制器中是唯一的,并且生成器仍然在它们中添加数字。
使用npm的openapi生成器版本4.3.1
OpenAPI声明文件内容或url命令行,用于生成openapi生成器-cli生成-g类型记录-角-i ./src/app/data/open-api.json -o ./src/app/data/-g/openapi
有什么办法让这些数字消失吗?
更新后端时,可能会在内部更改数字,这将导致手动代码重构。
发布于 2021-02-02 12:51:38
从模板中,数字来自“昵称”属性。
在OpenAPI的内部构件中,这是在生成打开的api.json文件时从operationId生成的。
Spring的解决方案(以及其他类似的解决方案,适应.)是调整operationId生成(原始答案)。
要使生成的代码仍然匹配公共接口(就像使用通用Spring控制器时一样),operationId必须匹配引用(默认:处理方法名)。下面是我使用的内容(ChangeController.class是通用的,大约80%的API是通用的)。
@Bean
public OperationCustomizer operationIdCustomizer() {
return (operation, handlerMethod) -> {
Class<?> superClazz = handlerMethod.getBeanType().getSuperclass();
if (Objects.nonNull(superClazz) && superClazz.isAssignableFrom(ChangeController.class)) {
operation.setOperationId(String.format("%s", handlerMethod.getMethod().getName()));
}
return operation;
};
}重要注意:这将在生成角客户端时在规范验证上产生错误,显式禁用验证(skipValidateSpec)。
此外,对于使用角10+的生成,openapi生成器5.0.0是必需的(对于一般的ModuleWithProviders)。
<plugin>
<groupId>org.openapitools</groupId>
<artifactId>openapi-generator-maven-plugin</artifactId>
<version>5.0.0</version>
<executions>
<execution>
<goals>
<goal>generate</goal>
</goals>
<configuration>
<inputSpec>${project.basedir}/../sic-frontend/src/app/api/openapi.json</inputSpec>
<generatorName>typescript-angular</generatorName>
<output>${project.basedir}/../sic-frontend/src/app/api</output>
<skipValidateSpec>true</skipValidateSpec>
<configOptions>
<ngVersion>10.0.0</ngVersion>
</configOptions>
</configuration>
</execution>
</executions>
</plugin>https://stackoverflow.com/questions/64206487
复制相似问题