如何在 Java 中使用 Dropwizard 获取 swagger.json
How to get swagger.json using Dropwizard in Java
我正在使用 Dropwizard 创建我的服务和 REST API,并且我将 dropwizard-swagger 添加到我的项目中,这样我就可以在我的 UI 上轻松访问这个 API。我正在创建一个 CLI 工具,它将使用 openapi-generator:
在 UI 端生成我的 API 的 Typescript 模型
openapi-generator generate -g typescript-fetch -i http://localhost:8080/swagger.json -o ~/Desktop/test
但是,我需要 swagger.json 定义,目前我正在从路径 http://localhost:8080/swagger.json 的 GET 请求中获取这些定义。我想通过我的 CLI Java 项目以编程方式获取 swagger.json(如何在不启动服务器的情况下获取 swagger 规范)。我正在寻找以编程方式生成 swagger.json 的方法,我尝试使用 swagger-maven-plugin:
<plugin>
<groupId>com.github.kongchen</groupId>
<artifactId>swagger-maven-plugin</artifactId>
<version>3.1.4</version>
<configuration>
<apiSources>
<apiSource>
<springmvc>false</springmvc>
<locations>
<location>me.pablo.api.LauraPortraitsRestMethods</location>
</locations>
<schemes>http,https</schemes>
<host>http://localhost:8080/</host>
<basePath>/swagger</basePath>
<info>
<title>My project</title>
<version>v1</version>
<description>Do this late</description>
<termsOfService>
http://www.github.com/kongchen/swagger-maven-plugin
</termsOfService>
<contact>
<email>kongchen@gmail.com</email>
<name>Kong Chen</name>
<url>http://kongch.com</url>
</contact>
<license>
<url>http://www.apache.org/licenses/LICENSE-2.0.html</url>
<name>Apache 2.0</name>
</license>
</info>
<templatePath>${basedir}/generated-sources/strapdown.html.hbs</templatePath>
<outputPath>${basedir}/generated-sources/document.html</outputPath>
<swaggerDirectory>${basedir}/generated-sources/</swaggerDirectory>
</apiSource>
</apiSources>
</configuration>
<executions>
<execution>
<phase>compile</phase>
<goals>
<goal>generate</goal>
</goals>
</execution>
</executions>
</plugin>
以及Rest方法的class
package me.pabloestrada.api;
import com.google.inject.Inject;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import javax.ws.rs.GET;
import javax.ws.rs.Path;
@Path("/laura")
@Api(value = "/laura")
public class LauraPortraitsRestMethods
{
private LauraPortraitsService delegate;
@Inject
public LauraPortraitsRestMethods(final LauraPortraitsService delegate) {
this.delegate = delegate;
}
@GET
@ApiOperation(value = "Getting developer name")
@Path("/dev")
public String getDeveloperName() {
return delegate.getDeveloperName();
}
}
当我 运行 mvn clean compile 时,我没有看到生成任何东西。我没有看到 swagger-maven-plugin 的任何输出。有没有人有任何建议来使这项工作或以编程方式获取 swagger.json 的不同方法?
如果有人还在寻找,请将其添加到您的 Maven 构建插件中:
<plugin>
<groupId>com.github.kongchen</groupId>
<artifactId>swagger-maven-plugin</artifactId>
<version>3.1.8</version>
<configuration>
<apiSources>
<apiSource>
<springmvc>false</springmvc>
<locations>
<location>me.pabloestrada.api.*</location>
</locations>
<schemes>http,https</schemes>
<outputFormats>json</outputFormats>
<basePath>/</basePath>
<host>127.0.0.1:8000</host>
<info>
<title>APIs</title>
<version>1.0.0</version>
<description>APIs</description>
<contact>
<email>support@whosebug.com</email>
<name>Support</name>
</contact>
<license>
<url>http://www.apache.org/licenses/LICENSE-2.0.html</url>
<name>Apache 2.0</name>
</license>
</info>
<swaggerDirectory>swagger</swaggerDirectory>
<swaggerFileName>swaggerspec</swaggerFileName>
</apiSource>
</apiSources>
</configuration>
<executions>
<execution>
<phase>compile</phase>
<goals>
<goal>generate</goal>
</goals>
</execution>
</executions>
</plugin>
它将创建一个 swagger 目录和一个名为 swaggerspec.json 的 json 文件,该目录包含您的 swagger 规范。
我正在使用 Dropwizard 创建我的服务和 REST API,并且我将 dropwizard-swagger 添加到我的项目中,这样我就可以在我的 UI 上轻松访问这个 API。我正在创建一个 CLI 工具,它将使用 openapi-generator:
在 UI 端生成我的 API 的 Typescript 模型openapi-generator generate -g typescript-fetch -i http://localhost:8080/swagger.json -o ~/Desktop/test
但是,我需要 swagger.json 定义,目前我正在从路径 http://localhost:8080/swagger.json 的 GET 请求中获取这些定义。我想通过我的 CLI Java 项目以编程方式获取 swagger.json(如何在不启动服务器的情况下获取 swagger 规范)。我正在寻找以编程方式生成 swagger.json 的方法,我尝试使用 swagger-maven-plugin:
<plugin>
<groupId>com.github.kongchen</groupId>
<artifactId>swagger-maven-plugin</artifactId>
<version>3.1.4</version>
<configuration>
<apiSources>
<apiSource>
<springmvc>false</springmvc>
<locations>
<location>me.pablo.api.LauraPortraitsRestMethods</location>
</locations>
<schemes>http,https</schemes>
<host>http://localhost:8080/</host>
<basePath>/swagger</basePath>
<info>
<title>My project</title>
<version>v1</version>
<description>Do this late</description>
<termsOfService>
http://www.github.com/kongchen/swagger-maven-plugin
</termsOfService>
<contact>
<email>kongchen@gmail.com</email>
<name>Kong Chen</name>
<url>http://kongch.com</url>
</contact>
<license>
<url>http://www.apache.org/licenses/LICENSE-2.0.html</url>
<name>Apache 2.0</name>
</license>
</info>
<templatePath>${basedir}/generated-sources/strapdown.html.hbs</templatePath>
<outputPath>${basedir}/generated-sources/document.html</outputPath>
<swaggerDirectory>${basedir}/generated-sources/</swaggerDirectory>
</apiSource>
</apiSources>
</configuration>
<executions>
<execution>
<phase>compile</phase>
<goals>
<goal>generate</goal>
</goals>
</execution>
</executions>
</plugin>
以及Rest方法的class
package me.pabloestrada.api;
import com.google.inject.Inject;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import javax.ws.rs.GET;
import javax.ws.rs.Path;
@Path("/laura")
@Api(value = "/laura")
public class LauraPortraitsRestMethods
{
private LauraPortraitsService delegate;
@Inject
public LauraPortraitsRestMethods(final LauraPortraitsService delegate) {
this.delegate = delegate;
}
@GET
@ApiOperation(value = "Getting developer name")
@Path("/dev")
public String getDeveloperName() {
return delegate.getDeveloperName();
}
}
当我 运行 mvn clean compile 时,我没有看到生成任何东西。我没有看到 swagger-maven-plugin 的任何输出。有没有人有任何建议来使这项工作或以编程方式获取 swagger.json 的不同方法?
如果有人还在寻找,请将其添加到您的 Maven 构建插件中:
<plugin>
<groupId>com.github.kongchen</groupId>
<artifactId>swagger-maven-plugin</artifactId>
<version>3.1.8</version>
<configuration>
<apiSources>
<apiSource>
<springmvc>false</springmvc>
<locations>
<location>me.pabloestrada.api.*</location>
</locations>
<schemes>http,https</schemes>
<outputFormats>json</outputFormats>
<basePath>/</basePath>
<host>127.0.0.1:8000</host>
<info>
<title>APIs</title>
<version>1.0.0</version>
<description>APIs</description>
<contact>
<email>support@whosebug.com</email>
<name>Support</name>
</contact>
<license>
<url>http://www.apache.org/licenses/LICENSE-2.0.html</url>
<name>Apache 2.0</name>
</license>
</info>
<swaggerDirectory>swagger</swaggerDirectory>
<swaggerFileName>swaggerspec</swaggerFileName>
</apiSource>
</apiSources>
</configuration>
<executions>
<execution>
<phase>compile</phase>
<goals>
<goal>generate</goal>
</goals>
</execution>
</executions>
</plugin>
它将创建一个 swagger 目录和一个名为 swaggerspec.json 的 json 文件,该目录包含您的 swagger 规范。