restapi-Swagger&x2B;Java+;错误的列表路径和附加API
在我的项目中,我使用Maven、Jetty、Swagger、Java和Jersey来创建RESTAPI。 我还使用Swagger为我的API创建了好看的文档 几乎每件事都没问题,而是有三个问题。 首先,这是我的web.xmlrestapi-Swagger&x2B;Java+;错误的列表路径和附加API,java,rest,jersey,jetty,swagger,Java,Rest,Jersey,Jetty,Swagger,在我的项目中,我使用Maven、Jetty、Swagger、Java和Jersey来创建RESTAPI。 我还使用Swagger为我的API创建了好看的文档 几乎每件事都没问题,而是有三个问题。 首先,这是我的web.xml <?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
version="2.5">
<display-name>Restful Web Application</display-name>
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:applicationContext.xml</param-value>
</context-param>
<listener>
<listener-class>
org.springframework.web.context.ContextLoaderListener
</listener-class>
</listener>
<listener>
<listener-class>
org.springframework.web.context.request.RequestContextListener
</listener-class>
</listener>
<servlet>
<servlet-name>jersey-serlvet</servlet-name>
<servlet-class>com.sun.jersey.spi.spring.container.servlet.SpringServlet</servlet-class>
<init-param>
<param-name>com.sun.jersey.config.property.packages</param-name>
<param-value>com.pjdb.rest;com.wordnik.swagger.jaxrs;</param-value>
</init-param>
<init-param>
<param-name>com.sun.jersey.api.json.POJOMappingFeature</param-name>
<param-value>true</param-value>
</init-param>
<init-param>
<param-name>api.version</param-name>
<param-value>1.0</param-value>
</init-param>
<init-param>
<param-name>swagger.api.basepath</param-name>
<param-value>http://localhost:8080/rest</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet>
<servlet-name>Bootstrap</servlet-name>
<servlet-class>com.pjdb.rest.Bootstrap</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>jersey-serlvet</servlet-name>
<url-pattern>/rest/*</url-pattern>
</servlet-mapping>
<filter>
<filter-name>ApiOriginFilter</filter-name>
<filter-class>com.pjdb.rest.utils.ApiOriginFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>ApiOriginFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
</web-app>
我想删除路径开头的/api文档
2) 如何从api中删除“/api文档/资源”?我只使用“employee”类,不使用“resources”
3) 如果我键入http://localhost:8080/rest/api-文档/员工
我有我的方法
以及为空的“/”主URL。我可以移除它吗
我尝试了很多配置。我错过了什么吗?我用这种方式解决了这个问题:
~/src/main/webapp/swagger ui/api docs.json
http://localhost:8080/swagger-ui/api docs.json
到您的index.html
目录中的discoveryUrl路径{
"apiVersion": "1.0",
"swaggerVersion": "1.1",
"basePath": "http://localhost:8080/rest",
"apis": [
{
"path": "/api-docs.json/employee",
"description": ""
}
]
}
和swagger ui/index.html
settings
<script type="text/javascript">
$(function () {
window.swaggerUi = new SwaggerUi({
discoveryUrl:"http://localhost:8080/swagger-ui/api-docs.json",
apiKey:"special-key",
dom_id:"swagger-ui-container",
supportHeaderParams: false,
supportedSubmitMethods: ['get', 'post', 'put'],
onComplete: function(swaggerApi, swaggerUi){
if(console) {
console.log("Loaded SwaggerUI")
console.log(swaggerApi);
console.log(swaggerUi);
}
$('pre code').each(function(i, e) {hljs.highlightBlock(e)});
},
onFailure: function(data) {
if(console) {
console.log("Unable to Load SwaggerUI");
console.log(data);
}
},
docExpansion: "none"
});
window.swaggerUi.load();
});
</script>
$(函数(){
window.swaggerUi=新的swaggerUi({
发现者:“http://localhost:8080/swagger-ui/api docs.json“,
apiKey:“特殊密钥”,
dom_id:“招摇过市ui容器”,
supportHeaderParams:false,
supportedSubmitMethods:['get','post','put'],
onComplete:函数(swaggerApi、swaggerUi){
if(控制台){
log(“加载的大摇大摆的UI”)
console.log(swaggerApi);
console.log(swaggerUi);
}
$('pre code')。每个(函数(i,e){hljs.highlightBlock(e)});
},
onFailure:功能(数据){
if(控制台){
console.log(“无法加载SwaggerUI”);
控制台日志(数据);
}
},
文档扩展:“无”
});
window.swaggerUi.load();
});
我会尽力回答你的三个问题,尽管我不是一个大摇大摆的专家。我还建议和IRC上那些大摇大摆的开发者谈谈——他们反应很快。我认为让Swagger“自动”工作是值得的,这样你就不必手动更新它了——这对我来说似乎不太理想
1) 你不想在你的列表路径中去掉api文档——你想为你的列表取一个唯一的名字。它不必是api文档(例如,我使用资源),但您需要某种前缀来区分实际的REST资源和它们的描述。所以我认为这根本不是问题
2) 您是否有一个扩展com.wordnik.swagger.jaxrs.javapilisting的类,可能称为ApiResourceListing。这就是你决定大摇大摆文档入口点的地方。也许你有一个像这样的额外的类,指向/资源?(它也可能是import com.wordnik.swagger.jaxrs.listing.ApiListing的扩展,如果在REST地址中未使用格式后缀,则使用该扩展
3) 我不知道这个。就像我一开始说的,也许可以问问IRC上的那些大摇大摆的家伙或者他们的朋友
4) 这个答案与Swagger 1.2有关。如果您最近刚刚遇到此问题,您可能希望查看已更新为1.3版的。接受一些答案如何?这是正确的答案。我也遇到了同样的问题,将基类从JavaApiListing更改为ApiListing解决了这个问题!
<script type="text/javascript">
$(function () {
window.swaggerUi = new SwaggerUi({
discoveryUrl:"http://localhost:8080/swagger-ui/api-docs.json",
apiKey:"special-key",
dom_id:"swagger-ui-container",
supportHeaderParams: false,
supportedSubmitMethods: ['get', 'post', 'put'],
onComplete: function(swaggerApi, swaggerUi){
if(console) {
console.log("Loaded SwaggerUI")
console.log(swaggerApi);
console.log(swaggerUi);
}
$('pre code').each(function(i, e) {hljs.highlightBlock(e)});
},
onFailure: function(data) {
if(console) {
console.log("Unable to Load SwaggerUI");
console.log(data);
}
},
docExpansion: "none"
});
window.swaggerUi.load();
});
</script>