在react native中,okhttp被集成为网络的底层。上层直接调用fetchapi发起网络调用。除非您对网络有特殊要求,否则现有的环境应该足以满足需要。
但一般来说,国内大型工厂都有自己的内部网络工具,实现流量统计、异常监控、网络性能优化等操作,不做任何修改也不会直接使用原来的okhttp。
所以在实际环境中,网络能力需要与公司的整体IT环境保持一致。因此,我们需要做的是取代react native的网络访问能力。
简单的解决方案,放弃fetchapi。本机层还通过本机模块与自己的fetch接口,以响应本机公开的API。
该方案实施成本低,易于维护。但对成员的要求相对较高,适用于团队成员较少的情况,范围在于团队内部维护的模块,无法控制第三方模块涉及的网络访问。
从底部更换react native中的网络模块。
查找react native的源代码,与现定制的native模块与native native模块是相同的,因此我们可以替换native networkingmodule中的实现,使其不依赖于okhttp库,而是依赖于公司的内部网络库。
如何替换它取决于如何在每个族中设计网络库API。这里没有更多的解释,networkingmodule的实现也非常简单。稍微读一读就可以弄清上下文。
该方案能够隔离上层,起到整体作用。这是一个理想的方案。但是会有一个问题,因为它涉及到React本机源代码的修改,所以需要分叉源代码来独立维护,而且成本相对较高。有很多相似的地方,这也是为什么每个家庭都需要在react native的实践中锁定版本的原因之一。我们只能期待Facebook未来能更灵活地设计这种机制。
调用网络能力基础的API是取回的,但是直接使用取回也是一件很麻烦的事情。这里,一个简单的RPC客户端包是基于fetch生成的。