flutter中使用RESTful接口

这篇文章简单的介绍一下,flutter中如何请求接口,并且解析响应的JSON,以及如何向服务器发送POST请求。

flutter中请求JSON的例子:

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

void checkRelease() async {
  String url = baseURL +
      "/release/latest?app=$appName&os=${Platform.operatingSystem}";

  print("check latest release with $url");
  var response = await http.get(url);
  if (response.statusCode != 200) {
    print("failed to check release: ${response.statusCode}, ${response.body}");
  } else {
    var releaseJSON = json.decode(response.body);
    print("releaseJSON: $releaseJSON");
  }
}

注意,简单的query string我们可以直接使用这种方式拼接,如果是复杂的,我们可以写 一个工具函数,把 Map<String, String> 或者 Map<String, List<Object>> 之类的 对象转换成query string然后再接上去。

encode或者decode JSON有这么几种用法:

  • jsonEncode(map)json.encode(map) 是一样的
  • jsonDecode(resp.body)json.decode(resp.body) 是一样的

    String jsonEncode(Object object, {Object toEncodable(Object nonEncodable)}) =>
    json.encode(object, toEncodable: toEncodable);
    
    dynamic jsonDecode(String source, {Object reviver(Object key, Object value)}) =>
    json.decode(source, reviver: reviver);
    

如果是向服务器发送JSON,那么就是:

Map<String, String> headers = {"Content-type": "application/json"};
print("request $url with $body & $headers");
var response = await http.post(url, headers: headers, body: json.encode(body));

注意我们要自己设置一个header。

dart的生态还是不够成熟,要是有Python中requests这样好用的库就很爽了。


更多文章
  • 微服务的缺点
  • 远程工作一周有感
  • Python中的并发控制
  • KVM spice协议在高分屏上的分辨率问题
  • 计算机中的权衡(trade-off)
  • [声明]本站所有文章禁止转载
  • Golang不那么蛋疼的sort
  • Flutter给Android应用签名
  • 使用Gitea+Drone打造自己的CI/CD系统
  • 2019年就要结束啦!
  • 为什么要使用gRPC?
  • Matebook X Pro 2019安装Debian 10
  • ArchLinux忽略某个包的升级
  • SQLAlchemy使用主从与数据库autocommit
  • Blackbox禁用IPv6