Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/382.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 关于Swagger API的建议_Java_Api_Swagger_Swagger Ui_Spring Rest - Fatal编程技术网

Java 关于Swagger API的建议

Java 关于Swagger API的建议,java,api,swagger,swagger-ui,spring-rest,Java,Api,Swagger,Swagger Ui,Spring Rest,我正在使用SpringBoot构建一个API,并使用Java8构建SpringREST服务。我刚刚发现了Swagger API,现在我想让我的API符合Swagger 据我所知,Swagger是一种记录API的工具,它还提供了从规范(v2中的Swagger.json)生成客户机和服务器代码的功能,此外还提供了一个与API交互的良好web界面 现在,我想要一些关于如何继续的建议,因为我已经有一个至少有15个控制器的现有API。 我是否应该从头开始编写整个规范(swagger.json文件),然后使

我正在使用SpringBoot构建一个API,并使用Java8构建SpringREST服务。我刚刚发现了Swagger API,现在我想让我的API符合Swagger

据我所知,Swagger是一种记录API的工具,它还提供了从规范(v2中的Swagger.json)生成客户机和服务器代码的功能,此外还提供了一个与API交互的良好web界面

现在,我想要一些关于如何继续的建议,因为我已经有一个至少有15个控制器的现有API。 我是否应该从头开始编写整个规范(swagger.json文件),然后使用codegen生成服务器代码(控制器和对象)?或者最好使用Swagger核心注释对现有控制器进行注释,然后从中生成json规范

第二个选择对我来说更有意义,但我不知道如何从现有API生成swagger.json规范(如果可能)

你能给我一些建议吗

谢谢

将swagger与spring boot或spring cloud集成起来非常简单。 只需对现有RESTAPI添加一些注释,它就会自动为您生成整个swagger规范。Swagger绝对是最流行的RESTAPI文档框架之一

pom.xml依赖项 注释
@EnableSwagger2
用于您的应用程序类

注释您的RESTAPI 像这样的

@RequestMapping(value = "/operate/add/{left}/{right}", method = RequestMethod.GET, produces = "application/json")
@ApiOperation(value = "addNumbers", nickname = "addNumbers")
@ApiResponses(value = { @ApiResponse(code = 200, message = "Success", response = Result.class),
        @ApiResponse(code = 401, message = "Unauthorized"), 
        @ApiResponse(code = 500, message = "Failure") })
public Result add(@PathVariable("left") int left, @PathVariable("right") int right) {
你完了。默认情况下包括Swagger UI,您还可以访问JSON格式的Swagger规范。访问
http://localhost:12001/swagger-ui.html#/


有关更多详细信息,请参阅此代码库:

我意识到这已经晚了,但这里有一个替代方案供您考虑:您可以手工编写OpenAPI描述,而不是从实现中生成OpenAPI描述,然后让您的实现在启动时读取它,并相应地自动配置其URL路由、响应类型等

Ie从文档中生成实现,而不是从实现中生成文档

我不知道这在春天有多可行(对不起)。使用Python和WSGI并不困难


这是否是一个好主意,是一个只有你能做出的判断调用。

你可以考虑,它与Spring MVC紧密结合,并从测试套件中生成文档。谢谢!然后我来看看:)招摇过市的一个优点是,您可以直接从文档(招摇过市ui)与API交互。使用SpringREST文档是否有类似的功能?
@Bean
public Docket newsApi() {
    return new Docket(DocumentationType.SWAGGER_2)
            .groupName("springboot")
            .apiInfo(apiInfo())
            .select()
            .paths(regex("/.*"))
            .build();
}
 
private ApiInfo apiInfo() {
    return new ApiInfoBuilder()
            .title("SpringBoot REST API with Swagger")
            .description("SpringBoot REST API with Swagger")
            .termsOfServiceUrl("http://www-03.ibm.com/software/sla/sladb.nsf/sla/bm?Open")
            .contact("sanket**@au1.ibm.com")
            .license("Apache License Version 2.0")
            .licenseUrl("https://github.com/IBM-Bluemix/news-aggregator/blob/master/LICENSE")
            .version("2.0")
            .build();
}
@RequestMapping(value = "/operate/add/{left}/{right}", method = RequestMethod.GET, produces = "application/json")
@ApiOperation(value = "addNumbers", nickname = "addNumbers")
@ApiResponses(value = { @ApiResponse(code = 200, message = "Success", response = Result.class),
        @ApiResponse(code = 401, message = "Unauthorized"), 
        @ApiResponse(code = 500, message = "Failure") })
public Result add(@PathVariable("left") int left, @PathVariable("right") int right) {