自己封装一个好用的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);
}
自己封装一个,我感觉还挺好用。
更多文章
本站热门
- socks5 协议详解
- zerotier简明教程
- 搞定面试中的系统设计题
- frp 源码阅读与分析(一):流程和概念
- 用peewee代替SQLAlchemy
- Golang(Go语言)中实现典型的fork调用
- DNSCrypt简明教程
- 一个Gunicorn worker数量引发的血案
- Golang validator使用教程
- Docker组件介绍(一):runc和containerd
- Docker组件介绍(二):shim, docker-init和docker-proxy
- 使用Go语言实现一个异步任务框架
- 协程(coroutine)简介 - 什么是协程?
- SQLAlchemy简明教程
- Go Module 简明教程