[Flitter/Dart] http 정보

11831 단어 FlutterDartstudytech

개요


다음은 이거죠?
네!인터넷 통신에서 정보를 얻는 거지.(API를 통한 정보 제공)

http 정보

  • http(dart.dev의 라이브러리)
  • 가져오기


    pubspec.yaml에 다음과 같은 내용을 기록하고 flutter pub get의 명령을 클릭하여 프로그램 라이브러리를 가져옵니다.
    http: ^[最新のバージョン]
    

    http 기술


    import 'package:http/http.dart' as http;  // 使用時にライブラリをインポートする。
    
    //get通信の場合
    http.get(Uri.https('${ドメイン}','${パス}',{クエリ(Map}));
    
    //post通信の場合
    http.post(Uri.https('${ドメイン}','${パス}'),body: {クエリ(Map});
    
    ※ 다른 것은 delete,put 등도 지원합니다.

    모델 정보


    API를 통해 얻은 데이터는 대개 Json입니다.
    데이터를dart에서 읽을 수 있도록 하는 상자는 모델입니다.
    // Modelの例
    class Album {
      final int id;
      final String title;
      final int userId;
    
      Album({required this.id, required this.title, required this.userId});
    
      factory Album.fromJson(Map<String, dynamic> json) {
        return Album(
          id: json['id'] as int,
          title: json['title'] as String,
          userId: json['userId'] as int,
        );
      }
    }
    
    [내용]
    fromJson에서 json의 데이터를 모델에 설정합니다.
    http에서 Json을 String으로 반환하지만 dart에서import 'dart:convert';jsonDecode에서는 String을 Map로 변환할 수 있습니다.
    그런 다음 Map의 키 값을 지정하여 모델로 설정하면 됩니다.
    참고로 제이슨이 명세서장이라면 아래의 기술을 통해 대응할 수 있다.
    json.map<Album>((element) => Album.fromJson(element)).toList()
    

    구체적 예


    import 'dart:convert';
    import 'package:http/http.dart' as http;
    import 'package:albums_photos/models/albums.dart';
    
    class AlbumsRepository {
      Future<Albums> getAlbums() async {
        try {
          final response =
              await http.get(Uri.https('jsonplaceholder.typicode.com', 'albums'));
          return Albums.fromJson(jsonDecode(response.body));
        } catch (error) {
          throw Exception(error.toString());
        }
      }
    }
    
    [내용]
    이것은 HTTP 통신을 통해 얻은 Json 데이터를 사진첩 모델로 설정한 것이다
    그 모형을 돌려주는 기능이야.
    이번에도 상태 코드가 200이 아닌 경우response.body의 내용과 생각한 내용이 다른 경우에도 모두 엑셉션으로 반납하지만, 사전 판정response.body 처리도 있었다.
    response가 보유한statusCode에서 Http 상태의 값을 얻을 수 있기 때문에 미리 거기서 판정할 수 있기 때문에 여력이 있다면 가장 좋다.

    감상


    API 통신이 가능하면 처리할 수 있는 정보량이 늘어나고 할 수 있는 일이 확대돼 프로그램이 흥미로워진다.
    상술한 비동기 처리를 사용하여 사용자를 오래 기다리게 하지 않고 표시할 수 있다면 괜찮은 처리를 그릴 수 있을 것 같다.

    링크 세트

  • http 기능 같은 거.
  • http 요리책
  • URL 구조 정보
  • 좋은 웹페이지 즐겨찾기