http 사용 사례들

https://fenderist.tistory.com/129

  • http 라이브러리 사용
  • 구현 소스
Future<String> getData() async {
  http.Response response = await http.get( 
    Uri.encodeFull('http://jsonplaceholder.typicode.com/posts'),
    headers: {"Accept": "application/json"},
    );
}

https://flutter.dev/docs/cookbook/networking/fetch-data

  • http package
  • 뭐야 설명 너무 잘되어있음.
  • 그냥 http.Response 보다 사용자 정의의 object 만들어서 객체반환하게끔 제작 권고
    • json serialization(json 직렬화)하는 방법은 두가지, 각 상황에 맞게끔 사용 권고
  • 예제 3번에 factory문법 처음 봄. (여기선 dart:convert를 안썼네)
  • build()메소드에 API 호출을 넣지않는게 좋습니다.
    • 생각했던 것보다 매우 잦게 호출이 되기때문에 build()에 두면 API 불필요한 호출로 앱속도가 느려집니다.
    • Call the fetch() method in either the initState() or didChangeDependencies() methods.

https://www.tutorialspoint.com/flutter/flutter_accessing_rest_api.htm

  • http package
  • Future 기반 라이브러리, 대기 및 비동기 기능 제공
  • 웹 요청을 수행하는 고급클래스 및 http제공
read − Request the specified url through 
       GET method and return back the response as Future<String>

get − Request the specified url through GET method and 
       return back the response as Future<Response>. Response is
       a class holding the response information.

post − Request the specified url through POST method 
       by posting the supplied data and return back the response 
       as Future<Response>

put − Request the specified url through PUT method 
       and return back the response as Future<Response>

head − Request the specified url through HEAD method and
       return back the response as Future<Response>

delete − Request the specified url through DELETE method and
       return back the response as Future<Response>



+ json serialization(json 직렬화) 하기

manaual serialization vs using code generation

1) manaual serialization

  • 소규모 프로젝트때 사용
  • 빠르게 프로토 타입을 제작해야할 경우 code generation이 과할 수 있음.
  • 내장 json decoder 사용 (dart:convert)
  • 외부 종속성(external dependencies)이나 particular setup process가 없으며 빠른 개념 증명에 좋음(it’s good for a quick proof of concept).
  • 단, 프로젝트가 커지면 수동 디코딩이 제대로 수행되지않음.
  • 직접 작성하면 관리가 어렵고, 오류발생하기 쉬움.
  • 존재하지 않은 json field에 엑세스할 때 오타있으면 코드에서 오류 발생.
    https://flutter.dev/docs/development/data-and-backend/json#serializing-json-inside-model-classes

2) Automated serialization using code generation

  • 중대형 프로젝트때 사용
  • 외부 라이브러리가 인코딩 간단한 키 입력만으로 불러서 생성하도록 하는것 의미.
  • 초기 설정 후 model class에서 코드를 생성하는 파일 감시자 실행.
profile
𝙸 𝚊𝚖 𝚊 𝚌𝚞𝚛𝚒𝚘𝚞𝚜 𝚍𝚎𝚟𝚎𝚕𝚘𝚙𝚎𝚛 𝚠𝚑𝚘 𝚎𝚗𝚓𝚘𝚢𝚜 𝚍𝚎𝚏𝚒𝚗𝚒𝚗𝚐 𝚊 𝚙𝚛𝚘𝚋𝚕𝚎𝚖. 🇰🇷👩🏻‍💻

8개의 댓글

comment-user-thumbnail
2020년 9월 25일

Flutter 공부 중인데 잘 보고가요~~

1개의 답글
comment-user-thumbnail
2021년 1월 19일

좋은글 올려주셔서 감사합니다!

답글 달기

Flutter 입문 후 자료가 많아서
당분간 신세좀 지겠습니다.

2개의 답글
comment-user-thumbnail
2024년 1월 5일

잘읽었습니다

답글 달기