自己封装一个好用的Dart HTTP库

用过Python的同学,大概都用过requests这个库,这么好用的库,就会想其他语言有没有这个库。Dart没有,所以自己封装:

import 'dart:convert';

import 'package:http/http.dart' as http;
import 'package:blogapp/consts.dart';

String genQueryString(Map<String, dynamic> queryStringMap) {
  if (queryStringMap == null) {
    return "";
  }

  List<String> queryStringList = [];
  queryStringMap.forEach((k, v) {
    if (v is String) {
      queryStringList.add("$k=$v");
    } else if (v is List) {
      if (v != null) {
        v.forEach((vv) => queryStringList.add("$k=$vv"));
      }
    } else {
      print("bad value type, ignore value $k-$v");
    }
  });
  return queryStringList.join("&");
}

Future<http.Response> postJSON(String uri, Object jsonBody,
    {Map<String, dynamic> queryString, Map<String, String> headers}) async {
  final qs = genQueryString(queryString);
  String url = "$baseURL$uri?$qs";
  if (headers == null) {
    headers = Map<String, String>();
  }
  headers["Content-type"] = "application/json";
  headers["User-Agent"] = userAgent;

  return http.post(url, headers: headers, body: json.encode(jsonBody));
}

Future<http.Response> getJSON(String uri,
    {Map<String, dynamic> queryString, Map<String, String> headers}) async {
  final qs = genQueryString(queryString);
  String url = "$baseURL$uri?$qs";
  if (headers == null) {
    headers = Map<String, String>();
  }
  headers["Content-type"] = "application/json";
  headers["User-Agent"] = userAgent;

  return http.get(url);
}

自己封装一个,我感觉还挺好用。


微信公众号
关注公众号,获得及时更新

更多文章
  • TCP/IP简明教程 - 从零构建TCP/IP协议(二)连接,断开与拥塞控制
  • TCP/IP简明教程 - 从零构建TCP/IP协议(这次叫PCT协议)
  • Lua Manual 阅读笔记
  • Golang Map 源码阅读与分析
  • MySQL 零碎知识 - MySQL必知必会
  • Golang slice 源码阅读与分析
  • 经典好书推荐(2017)
  • Golang log库 源码阅读与分析
  • 毕业后一年
  • ansible 简明教程
  • 自己写个搜索引擎
  • HTTP 路由的两种常见设计形式
  • Golang的short variable declaration
  • Greenlet和Stackless Python
  • 写一个简单的ORM