如何使用 Dart 的方法和数据向外部 API 发布信息

Posted

技术标签:

【中文标题】如何使用 Dart 的方法和数据向外部 API 发布信息【英文标题】:How To Make Post To A External API With Methods And Data By Dart 【发布时间】:2018-12-25 15:13:32 【问题描述】:

我有一个 Web 服务,想通过 Flutter Dart json 在我的 WebService API 链接中发布数据

【问题讨论】:

【参考方案1】:

对于 REST API 调用,我更喜欢使用名为 Dio 的库。使用 Dio 进行 GET、POST、PUT、DELETE 等调用太容易了。

举例

import 'package:dio/dio.dart';

   //Now like this

void _makeApiCall() async 
   Dio dio = new Dio();
   Response apiResponse = await dio.get('$YOUR URL?id=$id'); //Where id is just a parameter in GET api call
   print(apiResponse.data.toString());

如果您想进行 POST 调用并且需要使用该方法发送表单数据,请这样做

void _makeApiCall() async 
   Dio dio = new Dio();
   FormData formData = FromData.from(
    name : "name",
    password: "your password",
   ); // where name and password are api parameters
   Response apiResponse = await dio.post('$YOUR URL', data: formData); 
   print(apiResponse.data.toString());

您还可以将接收到的数据映射到所谓的 POJO 中,以便更好地处理和使用。 如果您想知道如何将数据映射到 POJO(对象),请告诉我。

【讨论】:

【参考方案2】:

我推荐使用这个包dio package

做post会是这样的:

Future<List> postDataFromURL_list(String url, Map map) async 
    // TODO: implement postDataFromURL_list
    Response response;
    Dio dio = new Dio();
    FormData formData = new FormData.from(map);

    response = await dio.post(url, data: formData);

  

【讨论】:

【参考方案3】:

您需要更具体地了解 API 和要发送的内容。这是来自HTTP client library的一个简单示例

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

var url = "http://example.com/whatsit/create";
http.post(url, body: "name": "doodle", "color": "blue")
    .then((response) 
  print("Response status: $response.statusCode");
  print("Response body: $response.body");
);

http.read("http://example.com/foobar.txt").then(print);

【讨论】:

【参考方案4】:

能否提供有关 API 的更多详细信息?

假设您的 API 像这样获取数据,http://localhost:3000

您可以按如下方式提出请求

  Future<String> create(String text) async 
    HttpClient client = new HttpClient();
    try 
      HttpClientRequest req = await client.post('localhost', 3000, '/');
      req.headers.contentType = new ContentType("application", "json", charset: "utf-8");
      req.write('"key":"value"');
      HttpClientResponse res = await req.close();
      if (res.statusCode == HttpStatus.CREATED) return await res.transform(UTF8.decoder).join();
      else throw('Http Error: $res.statusCode');
     catch (exception) 
      throw(exception.toString());
    

如果您想发布地图(从您拥有的任何 json 创建),您可以使用 http 包。 https://pub.dartlang.org/packages/http

将'package:http/http.dart'导入为http;

String url = "http://example.com/whatsit/create";
http.post(url, body: "name": "doodle", "color": "blue")
    .then((response) 
  print("Response status: $response.statusCode");
  print("Response body: $response.body");
);

【讨论】:

以上是关于如何使用 Dart 的方法和数据向外部 API 发布信息的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Flutter dart 的列表中的循环内附加数据?

▩Dart-Extension方法

防止 nuxt auth 将授权标头发送到外部 url

如何向外部 Rest Api 发出 Http Post 请求? [关闭]

使用 CORS 从 dart 应用程序向 laravel 4 api 发帖时出错

如何在 DART 中重新加载 api 调用?