南昌有限公司 网站,长沙网站设计费用,深圳网站建设好吗,最佳经验网站函数式web 前言场景给容器中放一个Bean#xff1a;类型是 RouterFunctionServerResponse每个业务准备一个自己的handler使用集合的时候加注解请求的效果 前言
springmvc5.2 以后允许我们使用函数式的方式#xff0c;定义web的请求处理流程 函数式接口 web请求处理的… 函数式web 前言场景给容器中放一个Bean类型是 RouterFunctionServerResponse每个业务准备一个自己的handler使用集合的时候加注解请求的效果 前言
springmvc5.2 以后允许我们使用函数式的方式定义web的请求处理流程 函数式接口 web请求处理的方式 1、controller RequestMapping: 耦合性路由、业务耦合 2、函数式web分离式路由、业务分离 官方文档
场景
场景user Restful-crud GET/user/1 获取1号用户 GET/users 获取所有用户 POST/user 请求体携带json put/user/1 请求体携带json修改1号用户 delete/user/1 删除1号用户
给容器中放一个Bean类型是 RouterFunction package com.atguigu.boot304demo.config;import com.atguigu.boot304demo.biz.UserBizHandler;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.http.MediaType;
import org.springframework.web.servlet.function.RequestPredicates;
import org.springframework.web.servlet.function.RouterFunction;
import org.springframework.web.servlet.function.RouterFunctions;
import org.springframework.web.servlet.function.ServerResponse;/*** author jitwxs* date 2023年10月22日 21:33*/
Configuration
public class WebFunctionConfig {/*函数式web:1、给容器中放一个Bean类型是 RouterFunctionServerResponse2、每个业务准备一个自己的handler核心四大对象1、RouterFunction:定义路由信息发什么请求谁来处理2、RequestPredicate: 定义请求请求谓语,请求方式GET\POSt、请求参数3、ServerTequest: 封装请求完整数据4、ServerResponse: 封装响应完整数据*/Beanpublic RouterFunctionServerResponse userRouter(UserBizHandler userBizHandler){return RouterFunctions.route().GET(/user/{id}, RequestPredicates.accept(MediaType.ALL),userBizHandler::getUser).GET(/users, userBizHandler::getUsers).POST(/user,RequestPredicates.accept(MediaType.APPLICATION_JSON), userBizHandler::postUser).PUT(/user/{id},RequestPredicates.accept(MediaType.APPLICATION_JSON),userBizHandler::putUser).DELETE(/user/{id},userBizHandler::deleteUser).build();}
}
每个业务准备一个自己的handler package com.atguigu.boot304demo.biz;import com.atguigu.boot304demo.bean.Person;
import jakarta.servlet.ServletException;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import org.springframework.web.servlet.function.ServerRequest;
import org.springframework.web.servlet.function.ServerResponse;import java.io.IOException;
import java.util.Arrays;
import java.util.List;/*** author jitwxs* date 2023年10月22日 21:51*/
Slf4j
Service
public class UserBizHandler {/*查询指定id的用户param requestreturn*/public ServerResponse getUser(ServerRequest request){
// 业务处理String id request.pathVariable(id);log.info(正在查询id为{}的数据,id);Person person new Person(2l,张三,aaa.com,18);return ServerResponse.ok().body(person);}public ServerResponse getUsers(ServerRequest request){
// 业务处理ListPerson list Arrays.asList(new Person(1l,张三,aaa.com,18),new Person(2l,张三,aaa.com,18));return ServerResponse.ok().body(list);}public ServerResponse postUser(ServerRequest request) throws ServletException, IOException {Person body request.body(Person.class);log.info(保存的信息是{},body);String ace post请求成功;
// 业务处理return ServerResponse.ok().body(ace);}public ServerResponse putUser(ServerRequest request){String ace put请求成功;
// 业务处理return ServerResponse.ok().body(ace);}public ServerResponse deleteUser(ServerRequest request){String ace 删除成功;
// 业务处理return ServerResponse.ok().body(ace);}
}
使用集合的时候加注解 请求的效果