Javascript fetch 的java版,借此实现,磨练自己的异步、响应式和非阻塞IO运用能力
实现 fetch,需要实现:
- Promise
- HTTP Request/Response
- HttpClient (非阻塞)
- TypeError (网络/解码相关异常)
最后,适配(适配器模式)成 javascript 的 fetch。
实现一: CompletableFuture + HttpClient
本着最小可行性产品原则,先用最简单、最快地方式实现,再慢慢从底层开始构建。
- Promise: 由
CompletableFuture包装实现 - Http Request/Respone: 提供和js一样的属性/方法,实现是可以直接包装
java.net.http.HttpResponse - HttpClient: 直接使用 JDK11 的
java.net.http.HttpClient - TypeError: 继承
RuntimeException
现在,已经完成了70%,示例如下:
Code: netty-college/fetch at main · onemsg/netty-college (github.com)
慢慢更新,期望最后能用Netty实现HttpClient、直接实现 Promise ~