gpt4 book ai didi

java - REST API - Swagger + Java + Jersey 错误的列表路径和额外的 api

转载 作者:搜寻专家 更新时间:2023-11-01 03:09:01 28 4
gpt4 key购买 nike

在我的项目中,我使用 Maven、Jetty、Swagger、Java 和 Jersey 来创建 REST API。我还使用 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.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>

1) 如何去掉listingPath开头的api文档?

{
"apiVersion": "1.0",
"swaggerVersion": "1.1",
"basePath": "http://localhost:8080/rest",
"apis": [
{
"path": "/api-docs/resources",
"description": ""
},
{
"path": "/api-docs/employee",
"description": ""
}
]
}

我想删除路径开头的/api-docs..

2) 如何从 api 中删除“/api-docs/resources”?我只使用“员工”类,而不使用“资源”。

3) 如果我输入 http://localhost:8080/rest/api-docs/employee 我有我的方法和 '/' 主 URL,它是空的。我可以删除它吗?

我已经尝试了很多配置。我错过了什么吗?

最佳答案

我是这样解决的:

  1. 将Swagger生成的api-docs.json保存到硬盘
  2. 根据需要编辑生成的 JSON
  3. 将此文件复制到 ~/src/main/webapp/swagger-ui/api-docs.json
  4. http://localhost:8080/swagger-ui/api-docs.json 放到你 /swagger 的 index.html 中的 discoveryUrl 路径-ui 目录

这个方法需要你,你必须自己修改你的主列表如果有任何变化,但它是安全且有效的解决方案。

我的 api-docs.json 看起来像这样:

{
"apiVersion": "1.0",
"swaggerVersion": "1.1",
"basePath": "http://localhost:8080/rest",
"apis": [
{
"path": "/api-docs.json/employee",
"description": ""
}
]
}

swagger-ui/index.html设置

<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>

关于java - REST API - Swagger + Java + Jersey 错误的列表路径和额外的 api,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14262660/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com