问题描述
我正在尝试使用Swagger Codegen为我的spring boot项目生成模型类。我在网上找到了一些参考,并在pom.xml中包含了以下插件:
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
<plugin>
<groupId>org.openapitools</groupId>
<artifactId>openapi-generator-maven-plugin</artifactId>
<executions>
<execution>
<goals>
<goal>generate</goal>
</goals>
<configuration>
<inputSpec>
${project.basedir}/src/main/resources/Contract-v1.yml
</inputSpec>
<generatorName>spring</generatorName>
<apiPackage>${project.groupId}.swagger.api</apiPackage>
<modelPackage>${project.groupId}.swagger.model</modelPackage>
<supportingFilesToGenerate>
ApiUtil.java
</supportingFilesToGenerate>
<configOptions>
<sourceFolder>src/main/java/</sourceFolder>
<delegatePattern>true</delegatePattern>
<interfaceOnly>true</interfaceOnly>
</configOptions>
</configuration>
</execution>
</executions>
</plugin>
我运行mvn install
,并且类在目录/target/generated-sources/openapi
中生成。但是我无法将这些生成的类导入到我的REST控制器类中。
我的理解是<modelPackage>
字段用于标识必须在其中放置生成的类的包。我对吗?
尽管这些生成的类位于正确的包中,但由于它们不在src/main/java
中,因此我可能无法将它们导入其他类中。
是否可以将这些生成的类放在src/main/java
目录下,还是由于其他类无法使用这些文件而使maven配置丢失?
解决方法
对于宽阔的UI,您需要提供依赖关系并需要进行一些基本配置,并且在REST API中,您需要包含一些更改
https://blog-api-rest.herokuapp.com/swagger-ui.html#/
您可以引用使用Swagger创建的此API
在Spring引导主应用程序文件中,包含以下代码
@SpringBootApplication
@EnableSwagger2
public class BlogappApplication {
public static void main(String[] args) {
SpringApplication.run(BlogappApplication.class,args);
}
@Bean
public Docket api() {
return new Docket(DocumentationType.SWAGGER_2).select()
.apis(RequestHandlerSelectors
.basePackage("com.example.blogapp.controller"))
.paths(PathSelectors.regex("/.*"))
.build().apiInfo(apiEndPointsInfo());
}
private ApiInfo apiEndPointsInfo() {
return new ApiInfoBuilder().title("Spring Boot REST API")
.description("Blog Application REST API")
.contact(new Contact("name","url","email id"))
.build();
}
}
并像下面的代码一样修改每个控制器
@ApiOperation(value = "Deleting a comment",response = String.class)
@ApiParam(value = "Comment ID",required = true)
@ApiImplicitParam(name = "Authorization",value = "Access Token",required = true,allowEmptyValue = false,paramType = "header",dataTypeClass = String.class,example = "Bearer access_token")
@DeleteMapping
public String delete(@RequestParam String id){
return commentService.delete(id);
}
在使用代码之前,请通过我给定的heroku swagger链接