Spring Boot 2 - 从 RestControler 返回 rx.Observable

Posted

技术标签:

【中文标题】Spring Boot 2 - 从 RestControler 返回 rx.Observable【英文标题】:Spring Boot 2 - Returning rx.Observable from RestControler 【发布时间】:2018-12-16 10:53:54 【问题描述】:

我试图从 Spring RestController 返回一个 Observable,但没有成功。我的代码如下:

@RestController
public class HystrixCommentController 

    @GetMapping(value = "/com1/id")
    public Observable<Comment> getComment1(@PathVariable int id) 
        return Observable.just(new Comment());
    

在邮递员中运行请求时,我总是收到以下错误:


  "timestamp": "2018-07-08T16:07:36.809+0000",
  "status": 500,
  "error": "Internal Server Error",
  "message": "No converter found for return value of type: class rx.internal.util.ScalarSynchronousObservable",
  "path": "/com1/1"

SpringBoot 2 不也支持 RestController 中的 rx.Observable 就像他们对 Mono/Flux 所做的那样?

我需要手动将 Observable 转换为 Mono/Flux 吗?

问候

注意:spring-boot-starter-webflux 包含在 pom 中

我试过这个:

@RestController
    public class HystrixCommentController 

        @GetMapping(value = "/com1/id", produces = "application/json")
            public Observable<Comment> getComment1(@PathVariable int id) 
            return Observable.just(new Comment());
        


没有成功:


    "timestamp": "2018-07-08T18:21:42.918+0000",
    "status": 406,
    "error": "Not Acceptable",
    "message": "Could not find acceptable representation",
    "path": "/com1/1"

【问题讨论】:

你见过这个吗? ***.com/questions/42748775/… 你可能只是缺少一个依赖项! 是的!你是对的......缺少的依赖是问题所在。谢谢! 【参考方案1】:

所以这里的问题是我的 pom.xml 中缺少依赖项:

<dependency>
    <groupId>io.reactivex</groupId>
    <artifactId>rxjava-reactive-streams</artifactId>
    <version>1.2.1</version>
</dependency>

感谢@Dovmo 发现问题

【讨论】:

以上是关于Spring Boot 2 - 从 RestControler 返回 rx.Observable的主要内容,如果未能解决你的问题,请参考以下文章

Spring Boot 2从入门到入坟 | 基础入门篇:「Spring Boot 2从入门到入坟」系列教程介绍

Spring Boot 2从入门到入坟 | 基础入门篇:「Spring Boot 2从入门到入坟」系列教程介绍

多模块 Gradle 项目 - 从 Spring-Boot 1.5 迁移到 2.1

从 Spring Boot 1.5 升级时为 Spring Boot 2.0 acuator 框架配置安全性

独立资源服务器(Spring Boot 2 + OAuth + JWT)在 Spring-boot 从 1.2.x 升级到 2.x 后给出 UsernameNotFoundException

使用 Spring-Boot 2.1 从 .yml 读取对象列表 [重复]