如何解决rxJava的API如何工作
我经常看到使用rxJava以反应方式编写的API。我已经学习了rxJava的基础知识,曾经以为我知道它是如何工作的。但是当我在API上下文中再次考虑它时,我开始不理解它。当没有观察者订阅可观察对象时,为什么API可以工作并返回响应?
在rxJava中,通常使用observable和observer来解释它,并且有一个订阅动作,例如
Observable<String> source = source.just("a","b");
source.subscribe(s -> System.out.println(s));
但是在使用rxJava和Spring编写的API中,没有观察者,也没有订阅动作,例如控制器类如下
@GetMapping(value = "/test")
public Observable<ServiceResponse> getTestValue(@RequestParam(value = "id") final String id) {
return testService.getValue(id);
}
“ testService”类将进行一些处理,例如调用另一个API以获取一些数据,进行过滤或映射等,并返回一个可观察的对象。
但是在整个API中,没有订阅动作,也没有观察者。但是,为什么它能够返回响应?
解决方法
API的客户端是观察者,他们应该执行subscribe
。因此,在您的示例中,预期客户端会这样做:
getTestValue("someId")
/* maybe some other operators here */
.subscribe();
该“客户端”可以是使用您的API开发自己的应用程序的开发人员,也可以是您要与之集成的某些框架的内部结构(在示例中,考虑到使用注释)。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。