如何在swaggaer4spring-web中设置发送按钮的动作URL?

时间:2015-07-03 07:44:51

标签: java spring-mvc swagger swagger-ui

我正在使用swagger4spring-web。 我很好地申请了我的申请。它运作良好。但是,如果我将此Web应用程序加载到其他服务器,则会出现CORS问题。

从我的应用程序加载apis,它运行良好。 如果我按下测试按钮,“试试看”,它失败了,因为它默认设置为“localhost”。

我想设置按钮的动作网址“试一试”。

我该如何解决?我想将此URL更改为真正的IP地址。

1 个答案:

答案 0 :(得分:1)

为了解决Spring RESTful应用程序的CORS问题,请查看this tutorial。换句话说,创建以下类并在您的应用程序中使用它:

import java.io.IOException;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletResponse;
import org.springframework.stereotype.Component;

@Component
public class SimpleCORSFilter implements Filter {
    public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException, ServletException {
        HttpServletResponse response = (HttpServletResponse) res;
        response.setHeader("Access-Control-Allow-Origin", "*");
        response.setHeader("Access-Control-Allow-Methods", "POST, GET, OPTIONS, DELETE");
        response.setHeader("Access-Control-Max-Age", "3600");
        response.setHeader("Access-Control-Allow-Headers", "x-requested-with");
        chain.doFilter(req, res);
    }
    public void init(FilterConfig filterConfig) {}
    public void destroy() {}
}

关于swagger4spring-web:如果查看this example code,这个类继承自ApiDocumentationController,最后一个提供了一个名为setBasePath()的方法,用它来设置你的swagger-api的basePath :

@Controller
@RequestMapping(value = "/documentation")
public class ExampleDocumentationController extends ApiDocumentationController {
    public ExampleDocumentationController() {
        ...
        setBasePath("http://www.youraddress.com");
        ...
    }
}

您还可以设置本地IP地址(固定值或动态值)。