簡體   English   中英

使用 http.dart 調用 CoinMarketCap API。不知道該怎么做

[英]Using http.dart to Call CoinMarketCap API. Not sure what to do

所以我是 flutter 和 dart 的新手,我正在嘗試從 CoinMarketCap API 調用。我正在使用 HTTP package 來調用數據和 API 來調用數據,但我對它們不是很熟悉。 ..

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

Future<Payload> getCryptoPrices() async {
    var response = await http.get(Uri.parse(
        "https://pro-api.coinmarketcap.com/v1/cryptocurrency/listings/latest?start=1&limit=5000&convert=USD"),

        headers: {
          'X-CMC_PRO_API_KEY': 'my-key',
          "Accept": "application/json",
        });

    if (response.statusCode == 200) {
      Payload payload = payloadFromJson(data.body);
      return payload;      
    }
  }

我收到幾個錯誤:

The name 'Payload' isn't a type so it can't be used as a type argument

The function 'payloadFromJson' isn't defined

Undefined name 'data'

我沒有成功導入JSON嗎? 我不確定如何修復錯誤。 我需要做什么才能成功撥打 API 電話? 任何反饋都會很棒。

  1. “有效負載”不是 flutter class,因此它不存在。 您是否嘗試使用定制的 Class?

  2. 'payloadFromJson' 錯誤意味着它不存在,所以如果它在另一個 class 中,您可能沒有正確導入它

  3. 未定義的名稱 'data' 表示數據尚未定義,如果您希望響應的主體使用 'response.body'

代碼更新 #1

import 'package:wnetworking/wnetworking.dart';


class CoinMarketCap {
  static const _apiKey = '111111111111111111111111111111';
  static const _url = 'https://pro-api.coinmarketcap.com/v1/cryptocurrency';

  static Future<void> getListingLatest(int limit) async {
    var url = '$_url/listings/latest?start=1&limit=$limit&convert=USD';
    var result = await HttpReqService.get<JMap>(
      url, 
      auth: AuthType.apiKey,
      authData: MapEntry('X-CMC_PRO_API_KEY', _apiKey)
    );
    var coins = (result?['data'] as List).cast<JMap>().map<String>((e) => e['name']);
    print(coins);
  }
}

void main(List<String> args) async {
  await CoinMarketCap.getListingLatest(7);
  print('\nJob done!');
}

Output:

(Bitcoin, Ethereum, Tether, USD Coin, BNB, XRP, Cardano)

Job done!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM