HTTP 통신

luneah·2022년 7월 22일
0

Flutter

목록 보기
16/29
post-thumbnail

Get vs Post

HTTP 통신 방식에는 GET과 POST 방식이 있다. 일반적인 데이터 요청에는 GET 방식을 사용하고 데이터 요청과 동시에 여러 값을 보낼 때에는 POST를 사용한다.

HTTP 통신

HTTP 통신을 위한 다트 라이브러리 : http

  • 흔한 http 통신 코드
import 'dart:convert' as convert;

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

void main(List<String> arguments) async {
  var url = 
	Uri.https('www.googleapis.com', '/books/v1/volumes', {'q': '{http}'});

  var response = await http.get(url);
  if (response.statusCode == 200) {
	var jsonResponse =
		convert.jsonDecode(response.body) as Map<String, dynamic>>;
	var itemCount = jsonResponse['totalItems'];
		print('Number of books about http: $itemCount.');
	} else {
		print('Request failed with status: ${response.statusCode}.');
	}
}
  • 요청한 주소의 값을 그대로 처리할 경우 - Response 객체 반환
    Future<http.Response> getListings({String apiKey = apiKey}) async {
    	final response = await _client.get(
    		Uri.parse('$baseUrl/query?function=LISTING_STATUS&apikey=$apiKey'));
    	return response;
    }
  • 특정 객체 타입으로 리턴하고자 할 경우
    1. 모델 클래스 준비
    2. fromJson(Map<String, dynamic> map) 함수 준비
    3. jsonDecode()로 String 형태의 Json을 Map 형태로 반환
    4. 변환된 Map을 통해서 객체 생성
    Future<CompanyInfoData> getCompanyInfo({
    	required String symbol,
    	String apiKey = apiKey,
    }) async {
    	final response = await _client.get(Uri.parse(
    		'$baseUrl/query?function=OVERVIEWS&symbol=$symbol&apikey=$apiKey'));
    	return CompanyInfoData.fromJson(jsonDecode(response.body));
    }
profile
하늘이의 개발 일기

0개의 댓글