使用 WebFlux 也有一段时间了,最近有一个需求需要用到重定向功能。开发人员无论怎么试都无法让网页进行重定向,然后我谷歌了非常的多的文章。有些文章说不支持类似 spring-mvc 的 forward 功能。有的说要升级到 5.0.2.RELEASE.patch 版本。
最后没办法,我只有去看 ServerResponse 接口的 API 了。发现它里面有 temporaryRedirect 和 permanentRedirect 两个方法可以实现重定向。根据它们的以上就可以知道,一个是临时重定向,一个是永久重定向。temporaryRedirect 代表 302,permanentRedirect 代表 301。
301 重定向与 302 重定向的区别:302 重定向是暂时的重定向,搜索引擎会抓取新的内容而保留旧的网址。301 重定向是永久的重定向,搜索引擎在抓取新内容的同时也将旧的网址替换为重定向之后的网址。
下面我们可以一个 WebFlux 重定向的简单案例。首先 pom.xml 文件还是非常的简单,只需要引入 spring-boot-starter-webflux 即可。
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-webflux</artifactId> </dependency>
然后我们创建一个 OAuthWeixinRouter 类,内容如下:
package com.xttblog.router; import com.xttblog.handler.WeixinHandler; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.web.reactive.function.server.*; /** * OAuthWeixinRouter * www.xttblog.com * @author xtt * @date 2019/1/4 下午3:24 */ @Configuration public class OAuthWeixinRouter { @Autowired private WeixinHandler weixinHandler; @Bean RouterFunction<ServerResponse> routerFunction() { return RouterFunctions.route(RequestPredicates.GET("/redirect"), weixinHandler::loginUrl); } }
WeixinHandler 类的代码如下:
package com.xttblog.handler; import org.springframework.stereotype.Component; import org.springframework.web.reactive.function.server.ServerRequest; import org.springframework.web.reactive.function.server.ServerResponse; import reactor.core.publisher.Mono; import java.net.URI; import java.util.*; /** * WeixinHandler * @author xtt * @date 2019/1/4 下午3:49 */ @Component public class WeixinHandler { public Mono<ServerResponse> loginUrl(ServerRequest serverRequest) { String TargetUrl = "https://www.xttblog.com"; return ServerResponse.temporaryRedirect(URI.create(TargetUrl)).build(); } }
然后,我们在编写一个 SpringBoot 的启动类,运行项目,在浏览器中输入:http://localhost:8080/redirect,回车后,完美的重定向到 www.xttblog.com 地址。
需要源码的东西,加我微信好友即可。
: » 详解 WebFlux 重定向 redirect
原创文章,作者:wdmbts,如若转载,请注明出处:https://blog.ytso.com/252002.html