mirror of
https://github.com/Qortal/qortal.git
synced 2025-07-23 04:36:50 +00:00
ADDED: Swagger UI for API documentation
This commit is contained in:
@@ -1,11 +1,15 @@
|
||||
package api;
|
||||
|
||||
import io.swagger.v3.jaxrs2.integration.resources.OpenApiResource;
|
||||
import java.io.File;
|
||||
import java.util.HashSet;
|
||||
import java.util.Set;
|
||||
import org.eclipse.jetty.rewrite.handler.RedirectPatternRule;
|
||||
import org.eclipse.jetty.rewrite.handler.RewriteHandler;
|
||||
|
||||
import org.eclipse.jetty.server.Server;
|
||||
import org.eclipse.jetty.server.handler.InetAccessHandler;
|
||||
import org.eclipse.jetty.servlet.DefaultServlet;
|
||||
import org.eclipse.jetty.servlet.ServletContextHandler;
|
||||
import org.eclipse.jetty.servlet.ServletHolder;
|
||||
import org.glassfish.jersey.server.ResourceConfig;
|
||||
@@ -36,16 +40,30 @@ public class ApiService {
|
||||
}
|
||||
this.server.setHandler(accessHandler);
|
||||
|
||||
// url rewriting
|
||||
RewriteHandler rewriteHandler = new RewriteHandler();
|
||||
accessHandler.setHandler(rewriteHandler);
|
||||
|
||||
// context
|
||||
ServletContextHandler context = new ServletContextHandler(ServletContextHandler.NO_SESSIONS);
|
||||
context.setContextPath("/");
|
||||
accessHandler.setHandler(context);
|
||||
|
||||
rewriteHandler.setHandler(context);
|
||||
|
||||
// API servlet
|
||||
ServletContainer container = new ServletContainer(config);
|
||||
ServletHolder apiServlet = new ServletHolder(container);
|
||||
apiServlet.setInitOrder(1);
|
||||
context.addServlet(apiServlet, "/*");
|
||||
|
||||
// Swagger-UI static content
|
||||
ClassLoader loader = this.getClass().getClassLoader();
|
||||
File swaggerUIResourceLocation = new File(loader.getResource("resources/swagger-ui/").getFile());
|
||||
ServletHolder swaggerUIServlet = new ServletHolder("static-swagger-ui", DefaultServlet.class);
|
||||
swaggerUIServlet.setInitParameter("resourceBase", swaggerUIResourceLocation.getAbsolutePath());
|
||||
swaggerUIServlet.setInitParameter("dirAllowed","true");
|
||||
swaggerUIServlet.setInitParameter("pathInfoOnly","true");
|
||||
context.addServlet(swaggerUIServlet,"/api-documentation/*");
|
||||
rewriteHandler.addRule(new RedirectPatternRule("/api-documentation", "/api-documentation/index.html")); // redirect to swagger ui start page
|
||||
}
|
||||
|
||||
//XXX: replace singleton pattern by dependency injection?
|
||||
|
Reference in New Issue
Block a user