前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >在WebFlux下从ServerWebExchange中获取参数

在WebFlux下从ServerWebExchange中获取参数

作者头像
Diuut
发布2022-11-22 20:27:11
11.3K0
发布2022-11-22 20:27:11
举报
文章被收录于专栏:DiuutDiuut

问题:使用正常的注解无法从前端发过来的请求中正确的获取到参数,又找不到问题所在,需要获取所有的请求体,再自己取参

获取参数方式和web包类似,直接在controller方法参数的位置填上serverHttpRequst,框架即可自动将请求注入,但是这里serverHttpRequst获取的请求仅限于普通请求的body中的内容,以及methed方法这些。但是,前端如果是通过form-data方式传参过来, serverHttpRequst 得到的是body是null。因此必须拿到更上一级的请求内容ServerWebExchange。通过ServerWebExchange获取form-data的参数再加以验证。

代码语言:javascript
复制
    @RequestMapping(value = "/uploadhead")    
    public Object uploadhead(ServerWebExchange exchange) throws IOException {
        Map<String, String> stringStringMap = exchange.getRequest().getHeaders().toSingleValueMap();
        log.info("map:{}", stringStringMap);
        //打印head
        Mono<MultiValueMap<String, String>> formData = exchange.getFormData();
        //获取form-data中的内容
        formData.subscribe(map -> {
            Map<String, String> formMap = map.toSingleValueMap();
            log.info("formData:{}", formMap);
        });
        //如果是获取post或者get请求之类的body的话就从exchange.getRequest().getBody()中获取
        Map<String, String> queryParams = exchange.getRequest().getQueryParams().toSingleValueMap();
        log.info("queryParams:{}", queryParams);
        URI uri = exchange.getRequest().getURI();
        log.info("uri:{}", uri);
        return exchange.getMultipartData().map(data -> {
                    Map<String, Part> multipartData = data.toSingleValueMap();
                    log.info("multipartData:{}", multipartData);
                    try {
                        return chessService.uploadhead(multipartData);
                        //此处拿到的就是form-data中获取的所有参数的map,需要打印或者使用就看自己的业务需求怎么处理了。
                    } catch (IOException e) {
                        e.printStackTrace();
                    }
                    return null;
                }
        );

Post Views: 4,645

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020年8月30日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档