📜  Flutter api 服务示例 - Dart (1)

📅  最后修改于: 2023-12-03 15:15:06.917000             🧑  作者: Mango

Flutter API 服务示例 - Dart

在Flutter中,我们可以使用Dart编写API服务来与后端交互。本篇文章将为您提供Flutter API服务示例的介绍,包括如何创建API服务,如何发送HTTP请求,如何处理响应等。

创建API服务

要使用Flutter API服务,我们需要首先在项目中引入http包。在pubspec.yaml文件中添加以下内容:

dependencies:
  http: ^0.13.1

接下来,我们需要创建一个类来处理API请求。为了便于管理,我们可以创建一个单独的文件,例如"api_service.dart"。

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

class APIService {

}

在APIService类中,我们可以编写各种发送API请求的方法。

发送HTTP请求

在APIService类中,我们可以使用http包发送各种类型的HTTP请求,例如GET、POST等。

以下是一个获取JSON数据的示例:

import 'dart:convert';

class APIService {
  static const String _baseUrl = 'https://jsonplaceholder.typicode.com';

  static Future<dynamic> get(String endPoint) async {
    var responseJson = null;

    try {
      final response = await http.get(Uri.parse(_baseUrl + endPoint));
      responseJson = _response(response);
    } on Exception catch (e) {
      print('Exception: $e');
    }

    return responseJson;
  }

  static dynamic _response(http.Response response) {
    switch (response.statusCode) {
      case 200:
        var responseJson = json.decode(response.body.toString());
        return responseJson;
      default:
        return null;
    }
  }
}

在上面的示例中,我们使用http包的get方法获取JSON数据。我们首先将API地址连接到_baseUrl上,然后使用Uri.parse将完整的API地址传递给http.get方法。

在API请求完成后,我们使用_response方法检查响应状态码。在此示例中,我们只处理状态码200的响应,如果响应状态码是200,我们使用json包将响应体转换为json格式,并将其返回。否则,我们返回null。

处理响应

在发送API请求后,我们需要处理API响应。根据响应的内容,我们可以将其转换为实体类对象或其他数据类型。

以下是一个示例代码:

import 'model/post.dart';

class APIService {
  // ...

  static Future<Post> getPost(int id) async {
    final response = await get('/posts/$id');

    if (response != null) {
      return Post.fromJson(response);
    }

    return null;
  }
}

在上面的示例中,我们使用了一个名为Post的类来表示从API获取的数据。在getPost方法中,我们获取指定id的Post数据,并将响应转换为Post对象。如果响应为null,则返回null。

结论

在Flutter中,我们可以轻松地创建API服务来与后端交互。使用http包,我们可以发送各种类型的HTTP请求,并根据响应内容,将其转换为实体类对象或其他数据类型。在开发Flutter应用程序时,熟练掌握API服务的使用技巧是非常重要的。