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

how can I set the action url of the send button in swaggaer4spring-web?

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

从我的应用程序加载 API,效果很好。 如果我按下测试按钮 "try it out",它会失败,因为它默认设置 "localhost"。

我想设置按钮"try it out"的动作url。

我该如何解决?我想把这个url改成真实的ip地址。

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

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, this class inherits from ApiDocumentationController 并且最后一个提供了一个名为 setBasePath() 的方法,请使用它来设置您的 swagger-api:

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

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