前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >在 Flutter 中发出 HTTP 请求的最佳库(2022 年)【Flutter专题31】

在 Flutter 中发出 HTTP 请求的最佳库(2022 年)【Flutter专题31】

作者头像
徐建国
发布2022-03-30 15:35:53
2.4K0
发布2022-03-30 15:35:53
举报
文章被收录于专栏:个人路线个人路线

“作者:坚果 华为云享专家,InfoQ签约作者,阿里云专家博主,51CTO博客首席体验官,开源项目GVA成员之一,专注于大前端技术的分享,包括Flutter,小程序,安卓,VUE,JavaScript。”

本文将向您介绍最好的开源软件包列表,这些软件包可以帮助我们在 Flutter 应用程序中发出 HTTP 请求。事不宜迟,让我们探索重要的事情。

Http

  • Pub likes: 3910+
  • GitHub stars: 735+
  • License: BSD-3-Clause
  • Written in: Dart
  • Links: Pub page | GitHub repo | Official docs

该包由 Dart 团队发布,目前是 pub.dev 上最受欢迎的 HTTP 包。它提供了一个高级 API,可以让您在处理网络任务时更轻松。您可以通过运行以下命令来安装它:

代码语言:javascript
复制
flutter pub add http

示例用法:

代码语言:javascript
复制
import 'package:http/http.dart' as http;

void sendPostRequest() async {
  final url = Uri.parse('https://test.jianguojs.com/api/v3/');
  final response = await http.post(url, body: {'email': 'example@jianguojs.com', 'name': 'Mr Happy'});
  print('Response status: ${response.statusCode}');
  print('Response body: ${response.body}');
}

该插件支持重试请求。您可以使用 RetryClient 类重试失败的请求:

代码语言:javascript
复制
import 'package:http/http.dart' as http;
import 'package:http/retry.dart';

Future<void> bootstrap() async {
  final client = RetryClient(http.Client());
  try {
    print(await client.read(Uri.parse('http://test.jianguojs.com/api/v3/')));
  } finally {
    client.close();
  }
}

Dio

  • Pub likes: 3300+
  • GitHub stars: 10.5k+
  • License: MIT
  • Written in: Dart
  • Links: Pub page | GitHub repo | API reference

Dio 是 Flutter 生态系统中增长最快的 HTTP 包。它超级强大且易于使用。该软件包为我们带来了许多非常有用的功能:

  • 全局配置
  • 拦截器
  • 表单数据
  • 取消请求
  • 重试请求
  • 文件下载
  • 暂停
  • HTTPS证书验证
  • Http2

您可以通过运行以下命令安装 Dio:

代码语言:javascript
复制
flutter pub add dio

无需编写太多代码即可使用它:

代码语言:javascript
复制
import 'package:dio/dio.dart';

void getData() async {
  try {
    var response = await Dio().get('http://www.example.com');
    print(response);
  } catch (e) {
    print(e);
  }
}

Dio 有几个扩展:

  • dio_cookie_manager : 用于使用 cookie
  • dio_http2_adapter:用于 http2 的东西

Retrofit

  • Pub likes: 650+
  • GitHub stars: 720+
  • License: MIT
  • Written in: Dart, Ruby, Swift, Kotlin, Python
  • Links: Pub page | GitHub repo | API reference

Retrofit 是一个类型转换的dio客户端生成器。它可以让你在 TypeScript 中使用类似装饰器的**@Something**编写代码。例如:

代码语言:javascript
复制
@JsonSerializable()
class MyClass {}

@PATCH("your-api-endpoint")
Future<Task> updateTaskPart(
      @Path() String id, @Body() Map<String, dynamic> map);

@PUT("your-api-endpoint")
Future<Task> updateTask(@Path() String id, @Body() Task task);

@DELETE("your-api-endpoint")
Future<void> deleteTask(@Path() String id);

@POST("your-api-endpoint")
Future<Task> createTask(@Body() Task task);

有关详细信息,请参阅API reference。

Chopper

  • Pub likes: 360+
  • GitHub stars: 560+
  • License: MIT
  • Written in: Dart, Shell
  • Links: Pub page | GitHub repo | API reference

与 Retrofit 类似,Chopper 是 Dart 和 Flutter 的另一个 HTTP 客户端生成器。您将需要安装chopper、chopper_generator和build_runner。有关使用 Chopper 的更多详细信息,请参阅其官方文档。

总结

我们已经浏览了 Flutter 最受欢迎的 HTTP 客户端插件列表。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2022-01-30,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 大前端之旅 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Http
  • Dio
  • Retrofit
  • Chopper
  • 总结
相关产品与服务
云开发 CloudBase
云开发(Tencent CloudBase,TCB)是腾讯云提供的云原生一体化开发环境和工具平台,为200万+企业和开发者提供高可用、自动弹性扩缩的后端云服务,可用于云端一体化开发多种端应用(小程序、公众号、Web 应用等),避免了应用开发过程中繁琐的服务器搭建及运维,开发者可以专注于业务逻辑的实现,开发门槛更低,效率更高。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档