1.0.7 • Published 4 years ago

fengwuxp_common_fetch v1.0.7

Weekly downloads
1
License
ISC
Repository
github
Last release
4 years ago

通用的fetch请求工具,支持浏览器,weex 微信小程序

思路

      1:请求统一由client发出
      2: client有一个请求适配器进行真正的处理,已对应不同环境,比如浏览器,Nodejs weex 微信小程序,react-native
         默认已经实现了 浏览器,weex,微信小程序3个端
      3:请求过程可以插入前置、后置拦截器
      4:通过encoder 和 decoder 可以进行复杂的数据处理,比如文件上传,请求和响应数据的混淆

扩展自定义环境下的适配器

  只需要实现对应环境的FetchAdapter接口就可以了
  

支持数据混淆

  • 请求数据混淆
  • 响应数据混淆

目前的环境变量

  浏览器 
  WEEX
  微信小程序
  
使用时需要设置 环境变量 process.env.RUN_ENV
使用方式
      1: http adpater
           不同的平台的的http请求工具

      2: http client
           屏蔽了平台的差异化


      3: rest template
           (1):固化了一系列的请求相关的内容 例如 超时时间定定义,统一拦截,统一异常处理
           (2):支持多个模块的路由

      4 feign prroxy

           以接口代理的形式屏蔽远程调用的感知,调用时就如同使用本地方法一样

      5  annotation

            注解增强:

            Feign:标记一个类为Feign代理

            RequestMapping相关注解:标记在上方法

            //接口签名注解
            Signature: 可以标记那些参数需要加入签名

            //接口重试
            FetchRetry


            注解除了RequestMapping 外 还可以增加 CachePut, Task等 来管理本地缓存以及定时作业
            还可以考虑增加注解直接把请求下来的数据加入状态管理器中 例如redux
       
       6  encoder和 file upload
             
             在代理中加入统一文件上传逻辑,可以在请求参数中直接传入File对象或base64字符串,使用ProxyUnifiedTransformRequestFileObjectEncoder
             可以自动上传文件,并自动覆盖参数。
                
                例如有一个商品评价接口,需要上传图片,一般的做法是先上传图片得到url,然后和评价内容一起提交,或者是使用表单将文件和数据一起提交
               
                第一种做法可能会重复上传很多无效的图片,而且开发的时候要先处理图片上传的逻辑 比较繁琐。
                
                第二种做法服务端要做额外的处理(比如统一拦截处理,或每个接口单独处理),这里就不赘述了。
                
                然而使用上述的统一处理,既可以简化开发人员的逻辑处理,有可用保证不会上传太多的无效的图片(默认情况上传策略会缓存上传结果,尽量减少重复上传的可能),
                服务也只需要提供一个统一上传的服务就好了,在很多场景可用简化开发流程,提高开发效率。