WebFlux开发基础篇--请求构造

本人正在构建的一个开源的项目地址:教育之星

修改POM文件,引入webflux的依赖

<dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-webflux</artifactId>
        </dependency>

一:注解方式,这种方式其实和传统的WebMvc的方式基本一致

@RestController
@Api(tags = "测试管理")
public class TestController {


    @GetMapping("/test")
    public ComResponse test(ServerHttpRequest serverRequest){
        return ComResponse.successResponse("1111");
    }
}

直接访问即可,这里需要注意的是,HTTPServletRequest在这里是不能用的,换成了ServerHttpRequest。

二:函数式变成的方式:

config配置:

import com.clark.daxian.gateway.handler.TestHandler;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.http.MediaType;
import org.springframework.web.reactive.function.server.RouterFunction;
import org.springframework.web.reactive.function.server.RouterFunctions;
import org.springframework.web.reactive.function.server.ServerResponse;

import static org.springframework.web.reactive.function.server.RequestPredicates.*;

@Configuration
public class RoutingConfiguration {

    @Bean
    public RouterFunction<ServerResponse> monoRouterFunction(TestHandler userHandler) {
        return RouterFunctions.route(GET("/api/test").and(accept(MediaType.APPLICATION_JSON)), userHandler::test);
    }
}

handler配置:

import com.clark.daxian.api.response.ComResponse;
import org.springframework.http.MediaType;
import org.springframework.stereotype.Component;
import org.springframework.web.reactive.function.BodyInserters;
import org.springframework.web.reactive.function.server.ServerRequest;
import reactor.core.publisher.Mono;
import org.springframework.web.reactive.function.server.ServerResponse;



@Component
public class TestHandler {

    public Mono<ServerResponse> test(ServerRequest request){
        Mono<ComResponse> test = Mono.just(ComResponse.successResponse());
        Mono<ServerResponse> notFound = ServerResponse.notFound().build();

        return test
                .flatMap(customer -> ServerResponse.ok().contentType(MediaType.APPLICATION_JSON).body(BodyInserters.fromObject(test)))
                .switchIfEmpty(notFound);
    }
}

启动访问即可

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值