[Flitter/Dart] http 정보
개요
다음은 이거죠?
네!인터넷 통신에서 정보를 얻는 거지.(API를 통한 정보 제공)
http 정보
가져오기
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 통신이 가능하면 처리할 수 있는 정보량이 늘어나고 할 수 있는 일이 확대돼 프로그램이 흥미로워진다.
상술한 비동기 처리를 사용하여 사용자를 오래 기다리게 하지 않고 표시할 수 있다면 괜찮은 처리를 그릴 수 있을 것 같다.
링크 세트
Reference
이 문제에 관하여([Flitter/Dart] http 정보), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://zenn.dev/tomofyro/articles/a78fadeaa07efa텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)