Swagger 2.0在spring MVC rest的实现中使用spring boot

时间:2016-09-20 08:31:31

标签: java swagger swagger-ui

  

如何为现有的Spring休息服务添加swagger?使用spingfox或swagger UI

2 个答案:

答案 0 :(得分:0)

这是使用Spring Boot应用程序

首先使用spring创建一个普通的REST API,

1

在你的pom.xml中,确保你已经完全放弃了依赖关系。

import wx
import weakref


class SillyWindow(wx.Frame):
    def __init__(self):
        wx.Frame.__init__(self, parent=None, title="Spawned Window")
        self.Show()


class ExWindow(wx.Frame):
    def __init__(self):
        wx.Frame.__init__(self, parent=None, title="Main Window")

        self.panel = wx.Panel(self)
        self.button = wx.Button(self.panel, label="Spawn window!")
        self.Bind(wx.EVT_BUTTON, self.spawn, self.button)
        self.txt = wx.TextCtrl(self.panel, pos=(0,100))

        self.wind = None

        self.timer = wx.Timer(self)
        self.Bind(wx.EVT_TIMER, self.update, self.timer)
        self.timer.Start(50)
        self.Show()

    def spawn(self,event):
        if self.wind is None:  # Preventing multiple spawning windows
            self.wind = weakref.proxy(SillyWindow())

    def update(self,event):
        if self.wind is not None:
            self.txt.SetValue(str(self.wind))
        else:
            self.txt.SetValue("None")


app = wx.App(False)
frame = ExWindow()
app.MainLoop()

2)在春季启动应用程序中 enter image description here

不要忘记@ EnableSwagger2

请记住使用docket方法添加bean,否则它将添加垃圾api值

3)在你的休息控制器中

enter image description here 不要错过在swagger编辑器中需要正确处理的api注释

稍后会出现在招摇的UI中。

enter image description here

完成所有这些后,如果你运行你的春季启动应用程序和

这就是你应该得到api文档

enter image description here

对于Swagger UI

如果您收到类似于招摇UI的错误

enter image description here

无法从服务器读取。它可能没有适当的访问控制原点设置。

要解决此问题,您需要访问swagger的

首先为chrome /任何浏览器添加一个CORS插件 - 在此下添加您的网址

enter image description here

然后这会启动你的招摇UI,你必须能够在浏览器上看到输出。

enter image description here

如果您使用的是jackson,请确保使用正确的版本号

java.lang.NoSuchMethodError:com.fasterxml.jackson。

或者任何其他杰克逊相关的错误是由于Jackson核心版本与Jackson数据库依赖关系在pom.xml中的版本不匹配引起的。

确保正确使用pom。

就我而言,

问题是我得到了不兼容的jackson-core和jackson-databind版本 - jackson-core 2.0.5正在被引入,但我相信至少需要2.1.0。

异常的第一行告诉你它找不到方法JsonParser.getValueAsString(),查看2.0d的API文档,该方法确实不存在。它看起来像是在2.1.0中添加的。

因此,您需要修复依赖项 - 最有可能是排除2.0.5并包括2.1.0。

其次,

如果你必须使用这个Swagger生成的codegen或swagger codegen

答案 1 :(得分:0)

首先,您需要在pom.xml

中为Swagger添加maven依赖项
<dependency>
    <groupId>io.springfox</groupId>
    <artifactId>springfox-swagger2</artifactId>
    <version>2.4.0</version>
</dependency>
<dependency>
    <groupId>io.springfox</groupId>
    <artifactId>springfox-swagger-ui</artifactId>
    <version>2.4.0</version>
</dependency>

然后添加SwaggerConfiguration类:

package com.mycompany.rest;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import springfox.documentation.builders.PathSelectors;
import springfox.documentation.builders.RequestHandlerSelectors;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;
import springfox.documentation.swagger2.annotations.EnableSwagger2;

/**
 * Created by smv on 10.09.2016.
 */
@Configuration
@EnableSwagger2
public class SwaggerConfiguration {
    @Bean
    public Docket api() {
        return new Docket(DocumentationType.SWAGGER_2)
                .select()
                .apis(RequestHandlerSelectors.any())
                .paths(PathSelectors.any())
                .build();
    }
}

您只需要为springboot项目进行最小的Swagger UI配置。 如果您有一些问题,可以使用simular项目https://github.com/mv200580/springboot-rest来引用示例存储库。