当前位置: 首页 > 知识库问答 >
问题:

在webflux中,当控制器的返回类型是Mono of Interface时,返回值不会将返回值转换为json

宋望
2023-03-14

在Spring MVC框架中,当控制器返回接口类型时,Spring的消息转换器可以将返回值转换为适当的消息(如JSON)。

例如,当我调用“vehicle”api时,我可以得到一条JSON消息。

    @GetMapping("vehicle")
    public Vehicle getVehicle() {
        return new Car();
    }

    public interface Vehicle {

    }

    public class Car implements Vehicle {
        private String gearType;
    }

但是,网络流量的行为不同。当返回类型是一个单一的界面时,它只支持“内容类型:文本/事件流”。

    @GetMapping("vehicle")
    public Mono<Vehicle> getVehicle() {
        return Mono.just(new Car());
    }

在我看来,Webflux的行为令人不安。是虫子吗?我需要添加自定义MessageWriter来编码接口类型吗?

共有1个答案

蒋高扬
2023-03-14

在带注释的控制器中,只返回车辆而不是单声道就足够了

注意:使用Mono时,可以使用显式处理函数

 类似资料:
  • 我使用这个MCP3561,没有外部时钟(MCLK),也没有使用中断(irq)(都是浮动的)。 数据表 我最初试图运行快速命令来获取adcdata,但它全部返回0. 然后我试图相应地设置所有配置位,并且当读取adcdata时,它仍然返回数据的所有0。但是在读取所有地址的增量中,我可以看到配置中的数据很好。 我的阅读功能: 我读到的数据是: r_buf[3]返回写入的配置0和。。。。以r_buf[28

  • 问题内容: 我有一个javascript函数,该函数调用通用函数对服务器进行ajax调用。我需要从ajax调用的回调函数中检索结果(true / false),但是我得到的结果始终是’undefined’。 如果没有我的全部逻辑,泛型函数的超级简化版本将是: 调用它的函数将类似于: “结果”变量始终为“未定义”,并且对其进行调试,我可以看到正在执行回调函数的“返回真”行。 为什么会这样?如何将返回

  • 12: 当方法有返回值时,invokestatic是否将返回值放在堆栈上?

  • 问题内容: 有了这个代码 我得到以下异常 我的猜测是,由于缺少Jackson,该对象无法转换为JSON。我不明白为什么,因为我以为杰克逊内置弹簧靴。 然后我试图将Jackson添加到pom.xml中,但是我仍然遇到相同的错误 我是否需要更改任何Spring Boot属性才能使其正常工作? 谢谢 问题答案: 问题是Foo中的一个嵌套对象没有任何对象

  • 问题内容: 我在使用Ajax时遇到问题。 问题是,在获得ajax响应之前,它会返回cnt。因此它总是返回NULL。 有没有办法使正确的返回响应值? 谢谢! 问题答案: 由于AJAX请求是异步的,因此您的cnt变量将在请求返回并调用成功处理程序之前返回。 我建议重构您的代码以解决此问题。 一种方法是从AJAX请求的成功处理程序中调用调用了GetGrantAmazonItemCnt()的任何函数,此方

  • 我尝试通过methodhandles将方法链接在一起,其中一些方法来自泛型类型。如果函数返回泛型类型,我必须为MethodType指定Object.Class,但我看不到将其转换回泛型类型参数类型的简单方法。在大多数情况下,这没有问题,因为invoke似乎自动转换它们,但我必须创建mhs,它可以用InvokeExact运行。难道没有简单的方法使用MethodHandles进行强制转换吗? 我的测试