Próbowałem użyć zboczeńca, aby udokumentować moją obsługę jaxrs-resteasy. Chcę skonfigurować to programowo w osadzonym serwerze serwerowni. Oto moje klasy zasobów, serwerów i aplikacji. Mogę uzyskać dostęp do http://127.0.0.1:9091/rest/hello
i sprawdzić, czy moja usługa spoczynku działa, ale gdy próbuję uzyskać dostęp do http://127.0.0.1:9091/rest/api-docs
, nie mogę go uruchomić, ale widzę zamiast 404 nie znaleziono. Czy ktoś może wskazać mi, co mogę zrobić źle, konfigurując Swagger.Nie można skonfigurować programu Swagger z wbudowanym pomostem programowo
pliku zasobów
@Api(value = "/", description = "Index")
@Path("/")
public class Index {
@GET
@ApiOperation(
value = "call Index",
response = Response.class,
responseContainer = "Object"
)
@Produces("text/html")
public Response index() throws URISyntaxException {
File f = new File(System.getProperty("user.dir")+"/index.html");
String mt = new MimetypesFileTypeMap().getContentType(f);
return Response.ok(f, mt).build();
}
@GET
@Path("/hello")
@ApiOperation(
value = "hello Get",
response = Response.class,
responseContainer = "Object"
)
public Response helloGet() {
return Response.status(200).entity("HTTP GET method called").build();
}
}
Server
public class JettyServer {
public static void main(String[] args) throws IOException {
Server server = new Server(9091);
final HandlerList handlers = new HandlerList();
ServletHolder h = new ServletHolder(new HttpServletDispatcher());
h.setInitParameter("javax.ws.rs.Application", "com.all.MyServices");
// h.setInitOrder(1);
ServletContextHandler restContextHandler = new ServletContextHandler(ServletContextHandler.SESSIONS);
restContextHandler.setContextPath("/rest");
restContextHandler.addServlet(h, "/*");
handlers.addHandler(restContextHandler);
server.setHandler(handlers);
try {
server.start();
server.join();
} catch (Exception e) {
e.printStackTrace();
}
}
}
plik Usługa
public class MyServices extends Application {
private static Set<Index> services = new HashSet<>();
public MyServices() {
System.out.println("Initializing Swagger BeanConfig");
BeanConfig beanConfig = new BeanConfig();
beanConfig.setVersion("1.0");
beanConfig.setResourcePackage(Index.class.getPackage().getName());
beanConfig.setBasePath("http://localhost:9091/api");
beanConfig.setDescription("My RESTful services");
beanConfig.setTitle("My RESTful API");
beanConfig.setScan(true);
services.add(new Index());
}
@SuppressWarnings({ "unchecked", "rawtypes" })
@Override
public Set getSingletons() {
return services;
}
@SuppressWarnings("rawtypes")
public static Set getServices() {
return services;
}
}
Czy kiedykolwiek znalazłeś rozwiązanie? Mam podobny problem, zawsze otrzymuję 404, gdzie według mnie powinny znajdować się informacje o Swaggerze. – medloh
Po prostu zgadnij: Czy poprawnie skonfigurowałeś podstawową ścieżkę w beanConfig? Próbujesz uzyskać dostęp do http: // localhost: 9091/rest/api-docs, ale podstawową ścieżką jest http: // localhost: 9091/api. W mojej klasie bootstrap dla Swagger'a skonfigurowałem również ścieżkę API (taką samą wartość jak basePath), w moim przypadku: ConfigFactory.config(). SetApiPath ("myPath"); – tareq