Посмотрите на вашу ссылку и код
this.register(ApiListingResource.class);
То, что ApiListingResource
- это фактический класс ресурсов, который обслуживает конечную точку swagger.json
. Если вы посмотрите на ссылку, вы увидите, что класс помечен путем ({type:json|yaml}
определяет, к какому типу данных вы вернетесь).
@Path("/swagger.{type:json|yaml}")
Если вы хотите изменить путь, вам нужно зарегистрировать его по-другому. Что вам нужно сделать, это использовать метод Resource.builder(ResourceClass)
, чтобы получить конструктор, где мы можем изменить путь. Например, вы можете сделать что-то вроде этого.
Resource swaggerResource = Resource.builder(ApiListingResource.class)
.path("foobar/swagger.{type:json|yaml}")
.build();
Затем вместо метода ResourceConfig#register()
используется метод ResourceConfig#registerResource(Resource)
.
this.registerResource(swaggerResource);
Вот полный тест с использованием Jersey Test Framework
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.core.Response;
import org.glassfish.jersey.server.ResourceConfig;
import org.glassfish.jersey.server.model.Resource;
import org.glassfish.jersey.test.JerseyTest;
import org.junit.Test;
import static org.junit.Assert.assertEquals;
public class ResourceBuilderTest extends JerseyTest {
@Path("/swagger.{type:json|yaml}")
public static class ApiListingResource {
@GET
@Produces("text/plain")
public String get() {
return "Hello World!";
}
}
@Override
public ResourceConfig configure() {
Resource swaggerResource = Resource.builder(ApiListingResource.class)
.path("foobar/swagger.{type:json|yaml}")
.build();
ResourceConfig config = new ResourceConfig();
config.registerResources(swaggerResource);
return config;
}
@Test
public void testIt() {
Response response = target("foobar/swagger.json")
.request()
.get();
String data = response.readEntity(String.class);
System.out.println(data);
assertEquals("Hello World!", data);
}
}