swagger-petstore是swagger官方提供的样例,展示了openapi完整的功能。
这里使用的是swagger-petstore的master版本。
-
下载swagger-petstore
-
运行swagger-petstore:
mvn clean package jetty:run
-
在浏览器中访问http://localhost:8080,如下图所示:
-
在sand-openapi/build.gradle中,添加依赖运行swagger-petstore所需的依赖:
pluginLibsCompile 'io.swagger.core.v3:swagger-jaxrs2-servlet-initializer:2.2.6', 'io.swagger:swagger-inflector:2.0.5'
-
将swagger-petstore项目src/main/java/下的代码,复制到sand-openapi/src/main/java/目录下
-
将swagger-petstore项目根目录下的inflector.yaml,复制到sand-openapi/config/中,并修改swaggerUrl和rootPath,如下所示:
... swaggerUrl: petstore-openapi-v3.yaml ... rootPath: /petstore/api
-
将swagger-petstore项目src/main/resources/openapi.yaml,复制为sand-openapi/config/petstore-openapi-v3.yaml,修改servers url设置如下:
servers: - url: /petstore/api/v3
-
编辑sand-openapi/webapp/petstore/WEB-INF/web.xml文件,添加swagger-petstore项目src/main/webapp/WEB-INF/web.xml的内容:
<servlet> <servlet-name>swagger-inflector</servlet-name> <servlet-class>org.glassfish.jersey.servlet.ServletContainer</servlet-class> <init-param> <param-name>javax.ws.rs.Application</param-name> <param-value>io.swagger.oas.inflector.OpenAPIInflector</param-value> </init-param> <init-param> <param-name>jersey.config.server.provider.packages</param-name> <param-value> com.fasterxml.jackson.jaxrs.yaml.JacksonYAMLProvider </param-value> </init-param> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>swagger-inflector</servlet-name> <url-pattern>/api/*</url-pattern> </servlet-mapping> <filter> <filter-name>CORSFilter</filter-name> <filter-class>io.swagger.oas.inflector.utils.CORSFilter</filter-class> </filter> <filter-mapping> <filter-name>CORSFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping>
-
启动ofbiz
-
编辑vuejs/openapi/vite.config.js,添加proxy设置:
server: { ... '/petstore/api': { target: 'https://localhost:8443', changeOrigin: true, secure: false, }, } }
-
进入vuejs/openapi/目录,启动vite-vue3:
cd vuejs/openapi/ npm run dev
-
在浏览器中,访问http://localhost:5173/viewfile?fileUri=/petstore/api/v3/openapi.yaml,如下图所示:
可以在swagger-ui中,点击各个接口的“Try it out”按钮,尝试调用接口,验证返回结果。