inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

[코드팩토리] [초급] Flutter 3.0 앱 개발 - 10개의 프로젝트로 오늘 초보 탈출!

미세먼지 데이터를 불러오는 과정에서 이슈가 있어 질문 드립니다.

해결된 질문

359

MinwooNa

작성한 질문수 4

0

안녕하세요.

stat_repository.dart 파일 내부에서 API를 불러오는 과정에 이슈가 있어 질문 드립니다.

 

import 'package:dio/dio.dart';
import 'package:dusty_dust/const/data.dart';
import 'package:dusty_dust/model/stat_model.dart';

class StatRepository {
  static Future<List<StatModel>> fetchData() async {
    // final response = await Dio().get(
    //   'http://apis.data.go.kr/B552584/ArpltnStatsSvc/getCtprvnMesureLIst',
    //   queryParameters: {
    //     'serviceKey': serviceKey,
    //     'returnType': 'json',
    //     'numOfRows': 30,
    //     'pageNo': 1,
    //     'itemCode': 'PM10',
    //     'dataGubun': 'HOUR',
    //     'searchCondition': 'WEEK',
    //   },
    // );
    final response = await Dio().get(
      'http://apis.data.go.kr/B552584/ArpltnStatsSvc/getCtprvnMesureLIst'
      '?serviceKey=$serviceKey'
      '&returnType=json'
      '&numOfRows=30'
      '&pageNo=1'
      '&itemCode=PM10'
      '&dataGubun=HOUR'
      '&searchCondition=WEEK',
    );

    return response.data['response']['body']['items']
        .map<StatModel>(
          (item) => StatModel.fromJson(json: item),
        )
        .toList();
  }
}

 

위 코드에서 주석을 처리한 부분대로 API를 호출하면(기존 강의 내용) 다음과 같은 에러가(서비스키가 등록되지 않았다는 내용) 나오고

<OpenAPI_ServiceResponse>
	<cmmMsgHeader>
		<errMsg>SERVICE ERROR</errMsg>
		<returnAuthMsg>SERVICE_KEY_IS_NOT_REGISTERED_ERROR</returnAuthMsg>
		<returnReasonCode>30</returnReasonCode>
	</cmmMsgHeader>
</OpenAPI_ServiceResponse>

 

위 코드에서 엔드포인트 부분에 직접 파라미터를 적으면 정상적으로 데이터가 출력됩니다.

 

관련 이슈들을 구글링 해보니 serviceKey를 받아오는 과정에서 인코딩 과정이 별도로 필요하다는데 만약 내부 설정을 변경 한다면 어떻게 해야 할까요?

flutter 클론코딩

답변 2

0

코드팩토리

안녕하세요!

API에서 제공해주는 인코딩된 키를 사용해보셨나요?

감사합니다!

0

MinwooNa

참고로 현재 dio 버전은 5.3.3 입니다!
dio: ^5.3.3

198강 (){onTap(e);}의 이해 돕기

0

19

1

video_call 플러그인 설치후 에러 발생

0

45

1

SDK 안드로이드 설치 질문!

0

59

1

코드팩토리 디스코드 링크 다시 부탁드려요~

0

92

1

Webview를 이용해서 URL 상의 페이지 출력 불가

0

69

1

홈스크린 함수를 함축해서 main.dart에 옮기는 문제

0

55

1

플레이스토어

0

59

1

아고라 엔진 init 함수의 반환타입이 Future<void> 이것의 의미는 무엇인가요?

0

55

1

가이드라인 질문

0

57

0

emulator 에러 환경설정 뭐가 문제 일까요??

0

76

1

emulator 실행 오류

0

93

3

Column을 가로방향 최대 사이즈를 차지하도록 하는 방법에 관련

0

71

1

pubspec.yaml에서 font를 추가하면서 weight 값을 지정하는 것이 의미가 있는 것인지 문의

0

43

1

setState()를 호출하지 않으면 build가 실행 안되는 건가요?

0

53

1

video_call 플러그인 설치시 에러문제

0

63

1

children 안의 if 문에서 { } 못쓰는 이유?

0

48

1

이렇게 오류가 떠요

0

63

1

AppBar 사용했는데

0

61

2

[문제해결] '오늘도 출첵!' 의 171번 강의에서 중요한 문제를 발견했습니다

0

56

1

StatefulWidget 실습 에러가 발생합니다.[해결완료]

0

63

1

Video Player 프로젝트에 대한 추가 질문

0

53

0

Row위젯이나 column위젯의 위치는 누가 정하나요??

0

42

1

geolocator 오류때문에 개발진행이 불가능입니다

0

62

1

API 관련 이슈

0

86

2