Flutter http req get method

강정우·2023년 6월 6일
0

Flutter&Dart

목록 보기
48/87
post-thumbnail

Get

1. get 메서드

  • http.get 메서드로 url만 보내서 값을 받아서 변수에 저장한다. 이때 물론 header에 파라미터를 추가하여 보낼 수 있다.

2. response.body

  • 백앤드에서 지정한 타입이나 결과 코드들의 데이터가 담겨있는 부분이다.
  • 그래서 받아온 정보를 json.decode 를 통하여 데이터에 저장한다.
    이때 받아온 response.body의 정보를 찍어보면 아래와 같이 나온다.

  • 이때 각각의 데이터 타입에 맞춰서 저장해주면 되는데 Map안에 또 Map을 사용하는 것은 너무 구체적인 방법이라고 에러가 뜨는데 이는
Map<String, dynamic>

이라고 지정하면 된다.

3. list 변수 선언

  • 사실 여기서부터는 본인이 어떻게 로직을 구성할 것인지, 데이터를 어떻게 짤 것인지에 따라서 바꾸면 되긴 하다.

  • global하게 쓰이는 변수 말고 지역적으로 사용되는 변수를 선언하여 바꿔치기 할 수 있도록 지역변수를 하나 선언한다.
    이때 데이터 타입은 맞춰서 잘 작성한다.

  • 그리고 listData가 위 파란색 글자처럼 Map 타입으로 지정되어있는데 Map 타입을 Iterable하게 바꾸어주는 .entries 키워드를 통하여 for문을 돌며 categories라는 Map으로 이루어진 enum과 비스무리하게 생긴 데이터를 돌며
    .firstWhere라는 메서드로 단 한 개만 찾아온다.

참고로 지역변수는 underscore(_) 은 필요없다.

  • 그리고 이를 앞서 지역 변수로 선언한 loadedItems 배열에 담아 이를 global 변수에 담아줌으로써 데이터를 가져오는 방법을 구현하였다.

효율 끌어올리기

  • 앞서 post 부분의 코드를 보면 2번 server를 왔다 갔다 하는데 이를 1번으로 줄여보겠다.
    무슨 뜻이냐 하면 로직을 만듦에 있어 server에 요청하는 회수가 적을 수록 좋다. 아래는 불필요하게 2번 요청하는 코드이다.

  • 위 코드를 잘 보면 loadITem을 한 후 addItem이 될 시 saveItem으로 http req를 보내고 다시 위젯으로 돌아와 _loadITem을 다시하고있다. 이를 최적화 하자면

  • 최초 loadItem을 진행하고 이후 addItem은 saveItem의 pop method에 입력데이터가 있으니 거기에 싣어서 보내면 굳이 한 번 더 load할필요가 없다는 것이다.

profile
智(지)! 德(덕)! 體(체)!

0개의 댓글