Swagger 与Resteasy交互的招摇过市不列出内容api
我们正试图让Swagger与我们的resteasy应用程序交互,以便api在Swagger页面上列出。我们在Java资源中使用注释,而不是yaml/json文件。我们希望内容是“动态的”或直接来自资源页面 当我们打开“招摇过市”页面时,会收到消息“fetching resource list://10.155.63.136/nodeMgmt”。当我使用firebug呈现页面时,我看到页面本身(index.html)被“输入”到内容中 我想我已经很接近了,但是我错过了一两件小事。我用这个例子作为我所做工作的指南: 同样,问题是resteasyapi中的内容没有被输入到swagger用户界面中。我的例子中的url是 我们使用的是JBoss 6.4、NoSpring、Resteasy 3.0.7、Swagger jaxrs 1.5.9 非常感谢您的帮助 Index.htmlSwagger 与Resteasy交互的招摇过市不列出内容api,swagger,resteasy,Swagger,Resteasy,我们正试图让Swagger与我们的resteasy应用程序交互,以便api在Swagger页面上列出。我们在Java资源中使用注释,而不是yaml/json文件。我们希望内容是“动态的”或直接来自资源页面 当我们打开“招摇过市”页面时,会收到消息“fetching resource list://10.155.63.136/nodeMgmt”。当我使用firebug呈现页面时,我看到页面本身(index.html)被“输入”到内容中 我想我已经很接近了,但是我错过了一两件小事。我用这个例子作为我
<script type="text/javascript">
$(function () {
window.swaggerUi = new SwaggerUi({
url: "/nodeMgmt",
dom_id: "swagger-ui-container",
supportedSubmitMethods: ['get', 'post', 'put', 'delete'],
onComplete: function(swaggerApi, swaggerUi){
log("Loaded SwaggerUI");
$('pre code').each(function(i, e) {
hljs.highlightBlock(e)
});
},
onFailure: function(data) {
log("Unable to Load SwaggerUI");
},
docExpansion: "none"
});
resource.java
@Path("/")
@Api(value = "/", description = "Node operations", produces = MediaType.APPLICATION_JSON, consumes = MediaType.APPLICATION_JSON)
public class NodeMgmtRestService {
private static final Logger log = Logger.getLogger(NodeMgmtRestService.class);
private static final String NODES = "nodes";
private static final String ID = "id";
NodeMgmtServiceProvider nodeMgmtServiceProvider = new NodeMgmtServiceProvider();
Service nodeMgmtService;
@GET
@Path("/{version}")
@Produces(MediaType.APPLICATION_JSON)
@ApiOperation(value = "Get all nodes", notes = "Returns a list of node", response = String.class, responseContainer="List")
public Response getNodes(
@ApiParam(value = "Version of api (1.0)", required = true) @PathParam("version") String version,
@ApiParam(value = "Filter by ", required = true) @QueryParam("filterParam") String filterParam,
@ApiParam(value = "Filter value ", required = true) @QueryParam("filterValue") String filterValue) {
List<Node> nodeList = new ArrayList<Node>();
List<Object> nodeJsonList = new ArrayList<Object>();
Map<String, List<Object>> nodeJsonMap = new HashMap<String, List<Object>>();
ObjectMapper objectMapper = new ObjectMapper();
Map<String, String> responseId = new HashMap<String, String>();
JsonNodeDao jsonNodeDao = new JsonNodeDao();
@ApplicationPath("")
public class NodeMgmtApplication extends SonusBaseRestApplication {
private static final Logger log = Logger.getLogger(NodeMgmtApplication.class);
/**
* Constructor
*/
public NodeMgmtApplication() {
super();
try {
//TODO Swagger
// Used for defining swagger
BeanConfig beanConfig = new BeanConfig();
beanConfig.setSchemes(new String[]{"http"});
beanConfig.setHost("localhost:8080");
beanConfig.setVersion("1.5.9");
beanConfig.setBasePath("/nodeMgmt");
beanConfig.setResourcePackage("com.sonus.ems.nodemgmt.web");
//beanConfig.setPrettyPrint(true);
beanConfig.setScan(true);
addService(new NodeMgmtAuthorizationFilter());
addService(new NodeMgmtRestService());
// Swagger
addService(new ApiListingResource());
addService(new SwaggerSerializers());
} catch (Exception e) {
log.error("NodeAdminApplication: Could not instantiate singletons " + e);
}
}
@Path("/")
@Api(value = "/", description = "Node operations", produces = MediaType.APPLICATION_JSON, consumes = MediaType.APPLICATION_JSON)
public class NodeMgmtRestService {
private static final Logger log = Logger.getLogger(NodeMgmtRestService.class);
private static final String NODES = "nodes";
private static final String ID = "id";
NodeMgmtServiceProvider nodeMgmtServiceProvider = new NodeMgmtServiceProvider();
Service nodeMgmtService;
@GET
@Path("/{version}")
@Produces(MediaType.APPLICATION_JSON)
@ApiOperation(value = "Get all nodes", notes = "Returns a list of node", response = String.class, responseContainer="List")
public Response getNodes(
@ApiParam(value = "Version of api (1.0)", required = true) @PathParam("version") String version,
@ApiParam(value = "Filter by ", required = true) @QueryParam("filterParam") String filterParam,
@ApiParam(value = "Filter value ", required = true) @QueryParam("filterValue") String filterValue) {
List<Node> nodeList = new ArrayList<Node>();
List<Object> nodeJsonList = new ArrayList<Object>();
Map<String, List<Object>> nodeJsonMap = new HashMap<String, List<Object>>();
ObjectMapper objectMapper = new ObjectMapper();
Map<String, String> responseId = new HashMap<String, String>();
JsonNodeDao jsonNodeDao = new JsonNodeDao();
public class ApiOriginFilter implements Filter {
@Override
public void doFilter(
ServletRequest request,
ServletResponse response,
FilterChain chain) throws IOException, ServletException {
HttpServletResponse res = (HttpServletResponse) response;
// Add access to the header
res.addHeader("Access-Control-Allow-Origin", "*");
res.addHeader("Access-Control-Allow-Methods", "GET, POST, DELETE, PUT, PATCH, OPTIONS");
res.addHeader("Access-Control-Allow-Headers", "Content-Type, api_key, Authorization");
//res.addHeader("Access-Control-Allow-Headers", "Origin, X-Atmosphere-tracking-id, X-Atmosphere-Framework, X-Cache-Date, Content-Type, api_key, Authorization, X-Atmosphere-Transport, x-requested-with, Total-Count, Total-Pages, Error-Message, *");
//res.addHeader("Access-Control-Request-Headers", "Origin, X-Atmosphere-tracking-id, X-Atmosphere-Framework, X-Cache-Date, Content-Type, api_key, Authorization, X-Atmosphere-Transport, x-requested-with, Total-Count, Total-Pages, Error-Message, *");
chain.doFilter(request, response);
}
@Override
public void destroy() {
}
@Override
public void init(FilterConfig filterConfig) throws ServletException {
}