如何在春季启动时在浏览器中查看默认网址?

Posted

技术标签:

【中文标题】如何在春季启动时在浏览器中查看默认网址?【英文标题】:How to make default url to be viewed in browser in spring boot? 【发布时间】:2019-08-17 04:40:50 【问题描述】:

我有一个使用 Spring Boot 2.1.3 版本开发的微服务,并且我使用 SpringFox 2.9.2 版本来编写 Swagger 文档。每次我向第三方或任何其他人分发或部署时,我都必须始终提及招摇的 url,以便用户通过 REST 端点。我的问题是如何在 spring boot 的情况下创建一个默认的重定向 url,以便 它应该自动重定向到 swagger-ui.html。这意味着如果用户在浏览器中键入http://localhost:8080,浏览器应该会自动重定向到 url,即。 http://localhost:8080/api/swagger-ui.html。我想知道这是否需要任何配置?

在访问 *** 之前,我浏览了以下链接并尝试过,但没有按预期工作。

Java Spring Boot: How to map my app root (“/”) to index.html?

Changing default welcome-page for spring-boot application deployed as a war

我也尝试了不同的方法,但我总是得到 404 或 Whitelabel 错误页面。我想知道是否有任何方法可以防止白标签错误页面自动重定向到招摇页面,即。 http://localhost:8080/api/swagger-ui.html

我还在 application.properties 中添加了以下内容。

server.servlet.context-path=/api

请在这方面帮助我。

【问题讨论】:

【参考方案1】:

你可以像这样添加一个 RedirectViewController:

@Configuration
public class WebConfiguration implements WebMvcConfigurer 

    @Override
    public void addViewControllers(ViewControllerRegistry registry) 
        registry.addRedirectViewController("/", "/api/swagger-ui.html");
    


【讨论】:

我已经尝试过这个选项,我在帖子中也提到过。它不工作。 也许你应该检查你的配置,在一个空白的应用程序中这将工作..【参考方案2】:

您的控制器应如下所示:

@RestController
public class DefaultController implements ErrorController 

    @Override
    public String getErrorPath() 
        return "/error";
    

    @RequestMapping("/error")
    public void handleErrorWithRedirect(HttpServletResponse response) throws IOException 
        response.sendRedirect("/swagger-ui.html");
    

    @RequestMapping(value = "/")
    public void redirect(HttpServletResponse response) throws IOException 
        response.sendRedirect("/swagger-ui.html");
    


我还在我的github spring-boot 项目中为您准备了一个工作模型。 对于默认/索引页面或错误页面,它将始终重定向到swagger-ui.html。如果您仍有问题,请告诉我。

【讨论】:

嗨,Amith,我检查了你的代码,根据我的问题,它不起作用。您可以在浏览器中尝试localhost:8080 吗?它是否重定向到招摇页面?它对我不起作用。我们可以通过某种方式处理错误页面。 如果你查看 application.properties 文件,我有这个设置# ****** WebServer ******* server.servlet.context-path=/ server.port=3007,所以如果你使用 localhost:3007 代替 8080,它会起作用。您可以根据需要更改这些属性。 嗨,Amith,如果你在 application.properties 中给出 server.servlet.context-path=/api,它就不起作用。认为api是客户不知道的微服务的名称。客户只需键入 localhost:8080/,它应该重定向到我提到的 url。【参考方案3】:

您可以使用控制器作为默认路径

@RequestMapping("/")
public String index(Model model)             
    return "redirect: /api/swagger-ui.html";

【讨论】:

看看这里希望你能找到解决方案docs.spring.io/spring-data/rest/docs/current/reference/html/… @debadatta-mishra,您需要删除您的 server.servlet.context-path=/api 或者您必须点击 localhost:8080/api 才能使此重定向生效。不过,根据您的问题,您真的 不希望设置 server.servlet.context-path 属性,因为您的 Web 服务只能/api/ 访问,并且绝不只是/ @Bwvolleyball,我已经尝试过这些选项,但没有任何效果。

以上是关于如何在春季启动时在浏览器中查看默认网址?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用IE浏览网站?

启动web项目时如何设置默认用IE浏览器

如何在没有Javascript调试的情况下在网站启动时在Visual Studio中启动新的Chrome实例?

浏览器从输入网址到页面展示的过程

如何设置网站的默认首页

edge浏览器怎么设置默认主页