開發與維運

flutter網絡dio框架公共請求參數、請求header使用總結

題記
—— 執劍天涯,從你的點滴積累開始,所及之處,必精益求精,即是折騰每一天。

重要消息


本文章將講述
1.get請求中配置公共參數
2.post請求配置公共參數
3.請求header配置

1 引言

在實際應用開發中,我們會有像 token、appVersionCode 等等這些每個接口請求都需要傳的參數 ,稱之為公共請求參數,公共請求參數配置方式總結有三:

  • 在get與post請求時將參數配置進去,也可以通過請求header配置
  • 通過請求header將參數配置進去
  • 通過攔截器將請求參數配置到參數配置中或者是header中
2 dio 配製公共請求參數

那麼在這裡 dio 的請求中我們可以考慮這樣來配製:

  String application = "V 1.2.2";
  int appVersionCode = 122;
  ///[url]網絡請求鏈接 
  ///[data] post 請求時傳的json數據
  ///[queryParameters] get請求時傳的參數
  void configCommonPar(url,data,Map<String, dynamic> queryParameters){
    ///配製統一參數
    if (data != null) {
      data['application'] = application;
      data['appVersionCode'] = appVersionCode.toString();
    } else if (queryParameters != null) {
      queryParameters['application'] = application;
      queryParameters['appVersionCode'] = appVersionCode.toString();
    } else {
      ///url中有可能拼接著其他參數
      if (url.contains("?")) {
        url += "&application=$application&appVersionCode=$appVersionCode";
      } else {
        url += "?application=$application&appVersionCode=$appVersionCode";
      }
    }
  }
}
3 dio 配製Content-Type 與請求 header

我們在創建 Dio對象時,會初始化一個 BaseOptions 來創建 Dio

      BaseOptions options = BaseOptions();
      ///請求header的配置
      options.headers["appVersionCode"]=406;
      options.headers["appVersionName"]="V 4.0.6";
      
      options.contentType="application/json";
      options.method="GET";
      options.connectTimeout=30000;
      ///創建 dio
      Dio dio = new Dio(options);

我們也可以在每次發送 get 、post 等不同的請求時,通過 dio 獲取到 默認的 options 然後修改一下

void getRequestFunction2() async {
    ///用戶id
    int userId = 3;
    ///創建 dio
    Dio dio = new Dio();

    ///請求地址
    ///傳參方式1
    String url = "http://192.168.0.102:8080/getUser/$userId";
    ///在這裡修改 contentType
    dio.options.contentType="application/json";
    ///請求header的配置
    dio.options.headers["appVersionCode"]=406;
    dio.options.headers["appVersionName"]="V 4.0.6";
    ///發起get請求
    Response response = await dio.get(url);

  ...
  }

完畢

在這裡插入圖片描述

Leave a Reply

Your email address will not be published. Required fields are marked *