xgrn-fetch

RN容器-网络模块

Usage no npm install needed!

<script type="module">
  import xgrnFetch from 'https://cdn.skypack.dev/xgrn-fetch';
</script>

README

XGFetch

RN容器-网络模块

功能

网络模块

安装

私有库操作

nrm ls

如果提示nrm命令不存在,如下操作

npm install -g nrm

然后增加私有库地址并使用:


nrm add xgnpm  http://172.16.2.71:4873/
nrm use xgnpm
npm install

安装依赖

$ npm i xgrn-fetch -S

项目配置

Android

react-native link xgrn-fetch

iOS

react-native link xgrn-fetch

库升级

npm update xgrn-fetch    

配置

Android 在MainApplication的onCreat()方法中初始化网络库的操作:

    CoreUtils.init(this.getApplication());
    setDefaultEnv();
     private void initNetwork() {
          FetchService.init(new IFetchExternalParams() {
              @NonNull
              @Override
              public String clientId() {
                  return "tubobo";
              }

              @NonNull
              @Override
              public String clientSecret() {
                  return "tubobo";
              }

              @NonNull
              @Override
              public String clientSource() {
                  return "tubobo";
              }


              @Override
              public String userCenterHost() {
                  return EnvServers.getTBBUserApi();
              }

              @Override
              public String getBussinessApi() {
                  return EnvServers.getTBBApi();
              }

              @Override
              public String getPayApi() {
                  return EnvServers.getPayApi();
              }

              @Override
              public void tokenInValid() {
                  TokenUtils.exitLogin();
                  NavigationUtil.pushToJsPage("auth/LoginPage");
              }

              @Override
              public String mockHost() {
                  return null;
              }

              @Override
              public List<Interceptor> interceptors() {
                  List list = new ArrayList();
                  list.add(new HeadersInterceptor());
                  return list;
              }

              @Override
              public String appVersion() {
                  return "";
              }


              @Override
              public Context getContext() {
                  return getApplicationContext();
              }

              @Override
              public boolean isRelease() {
                  return BuildConfig.BUILD_TYPE.equals("release");
              }

          });
      }

其中clientId,clientSecret,clientSource为需要从服务端获取,baseHost为请求的host,这样初始化就完成了

iOS

pod安装(由于用到了fmdb)

cd ios
pod init
vim Podfile

插入下面的代码

source 'http://git.ops.com/XGN-IOS/xgn.git'
source 'https://github.com/CocoaPods/Specs.git'

target 'XGFetchProject' do
  # Uncomment the next line if you're using Swift or would like to use dynamic frameworks
  # use_frameworks!

  # Pods for XGFetchProject
  pod 'XGHttpClient'
  pod 'XGAuthObjc'


end

找星云开通私有pod库权限,然后链接

pod repo add xgn http://git.ops.com/XGN-IOS/xgn.git

pod install


pod repo update xgn

pod install


用法

1. 导入XGNavigation
import XGFetch from 'xgrn-fetch'
2. 调用原生发送请求  可传多个参数
XGFetch.fetch(path, body).then((response) => {
     if (response.ok) {
     } else {
             }
 });

API介绍

1.业务层发起请求的调用方式

 /**
    * 业务层发起请求的调用方式(目前仅支持POST请求)
    * @param path      String
    * @param body      Object  请求body
    * @param hostKey      String  主机地址对应的Key
    * @param header    Object  请求header
    * @param option    Object  额外配置.目前仅会添加timeout字段,单位s(秒)
    * @return {*|Promise.<any>|Promise}
    *  返回值格式:
    *      ok:             bool    请求是否成功,resultCode === 0
    *      resultCode:     number  请求状态码。可能为http status 或 系统网络底层错误码 或 业务层错误码
    *      resultDesc:     string  描述一定不空
    *      resultData:     any     当且仅当http(200~300,且业务数据解析正确,且resultCode===0时,服务器返回的数据)
    *  option说明:
    *  目前支持设置timeout, requireToken 不设置会使用默认值
    *  timeout默认值60
    *  requireToken默认值true
    */
   async fetch(path,body,hostKey,header,option){}

2. 登录 (新光用户中心统一登录)

/**
       * 登录
       * @param phone
       * @param password
       * @param type
       * @returns {*|Promise}
       */
login(phone, password, type = "username") {}

3.注册

/**
     * 注册
     * @param phone
     * @param password
     * @param verifyCode
     * @param type
     */
    register(phone, password, verifyCode, type = "name") {}

4.找回密码

   /**
     * 找回密码
     * @param phone
     * @param password
     * @param verifyCode
     * @returns {*}
     */
    findPwd(phone, password, verifyCode) {}

5.发送验证码

  /**
     * 获取验证码
     * @param phone
     * @param type
     * @returns {*}
     */
    sendSMS(phone, type) {}

6.修改密码

/**
      * 修改密码
      * @param newPassword
      * @param oldPassword
      * @returns {*}
      */
 modifyPwd(newPassword, oldPassword) {}

7.获取当前环境

 /**
    * 获取当前环境
    * @returns {*|number}
    * 0 开发环境
    * 1 测试环境
    * 2 预发环境
    * 4 生产环境
    */
   getEnv() {}

8.切换当前环境

 /**
      * 切换当前环境
      * @param envNumber
      * 0 开发环境
      * 1 测试环境
      * 2 预发环境
      * 4 生产环境
      * @returns {*}
      */
 switchEnv(envNumber) {}

9.获取当前环境下key所对应的值

     /**
         * 获取当前环境下key所对应的值
         * @param key
         * @returns {*}
         */
      getEnvValue(key) {

10.清空Token

 /**
  * 清空Token
 */
  clearToken() {}

11.单张图片上传

/**
     * 单张图片上传
     *
     * @param imagePath 需要上传图片的本地路径
     * @param hostKey 图片服务器地址对应的Key
     * @param path 图片服务器地址路径
     * @returns {Promise.<void>}
     */
     
    uploadImage(imagePath,path,hostKey)