Android - 인터넷에서 데이터 가져오기

2022. 5. 20. 13:41IT/안드로이드

반응형

오늘의 주제는 인터넷에서 데이터 가져오기 입니다 ! 

학습할 내용

  • REST 웹 서비스의 정의
  • Retrofit 라이브러리를 사용하여 인터넷에서 REST 웹 서비스에 연결하고 응답 받기
  • Moshi 라이브러리를 사용하여 JSON 응답을 데이터 객체로 파싱하기+

시작 코드는 아래의 안드로이드 개발 공식 소스로 시작합니다.

프로젝트 이름은 MarsPhotos 앱 입니다.

시작 코드 URL:

https://github.com/google-developer-training/android-basics-kotlin-mars-photos-app/tree/starter

화성 사진 데이터는 웹 서버에 저장된다. 이 데이터를 App으로 가져오려면, 연결을 설정하고 인터넷을 통해 서버와 통신해야한다.

대부분의 웹 서버는 REST라는 Stateless 웹 아키텍처를 사용한다.

이 아키텍처를 제공하는 웹 서비스 : RESTful 이라고 한다.

표준화 방법으로, URI를 통해 RESTful 웹 서비스에 요청이 전송된다. URI는, 서버의 리소스 이름으로 식별한다. 

android-kotlin-fun-mars-server.appspot.com

이것이 URI이고, 

https://android-kotlin-fun-mars-server.appspot.com/realestate

https://android-kotlin-fun-mars-server.appspot.com/photos

요런게 URL이다. URL은, 리소스를 획득하는 구체적 location을 포함한 URI라고 이해했다. 

즉, 기본 access 네트워크 위치가 모두 지정된 주소이다. 이러한 URL은, http: 를 통해 가져올수 있으며, /realestate 또는 /photos 등으로 식별 되는 리소스를 참조한다. 이 Codelab에서는 /photos 를 사용한다.

* 우리가 주로 사용하는 URL은 실제로 URI의 한 유형이다. 

참고로 , stateful, stateless , REST, HTTP에 관한 내용은 아래 링크에 잘 설명이 되어있다. 참고하자. 

https://5equal0.tistory.com/entry/StatefulStateless-Stateful-vs-Stateless-%EC%84%9C%EB%B9%84%EC%8A%A4%EC%99%80-HTTP-%EB%B0%8F-REST

 

[Stateful/Stateless] Stateful vs. Stateless 서비스와 HTTP 및 REST

Contents 0. Prologue 1. Stateful Service 2. Stateless Service 3. Why Stateless Service 4. Stateless Service 및 HTTP, 그리고 REST Stateful/Stateless 서비스의 개념을 알아보고, 이를 바탕으로 Stateless..

5equal0.tistory.com

웹 서비스 응답은, 일반적으로 Key - value Pair 로 구조화된 데이터를 나타내는 XML 또는 JSON 등의 일반적인 웹 형식 중 하나로 지정되어있다. 

이번 작업에서는, 서버와 네트워크 연결을 설정, 서버와 통신하고 JSON 응답을 받는다. 

이미 작성되어 있는 백엔드 서버를 사용하고, 타사 라이브러리인 Retrofit 라이브러리를 사용해 backend 서버와 통신한다.

 

REST 웹 서비스

  • 웹 서비스는 인터넷을 통해 제공되는 소프트웨어 기반 기능으로, 앱은 이 기능을 통해 요청을 실행하고 데이터를 다시 가져올 수 있습니다.
  • 일반적인 웹 서비스는 REST 아키텍처를 사용합니다. REST 아키텍처를 제공하는 웹 서비스를 RESTful 서비스라고 합니다. RESTful 웹 서비스는 표준 웹 구성요소 및 프로토콜을 사용하여 빌드됩니다.
  • 표준화된 방법으로 URI를 통해 REST 웹 서비스에 요청을 전송합니다.
  • 웹 서비스를 사용하려면 앱은 네트워크 연결을 설정하고 서비스와 통신해야 합니다. 그런 다음 앱은 사용할 수 있는 형식으로 응답 데이터를 수신하고 파싱해야 합니다.
  • Retrofit 라이브러리는 앱의 REST 웹 서비스 요청을 지원하는 클라이언트 라이브러리입니다.
  • 변환기를 사용하여 웹 서비스에 전송하고 웹 서비스에서 가져오는 데이터로 해야 할 일을 Retrofit에 알립니다. 예를 들어 ScalarsConverter 변환기는 웹 서비스 데이터를 String 또는 다른 프리미티브로 취급합니다.
  • 앱이 인터넷에 연결할 수 있으려면 Android 매니페스트에 "android.permission.INTERNET" 권한을 추가합니다.

JSON 파싱

  • 웹 서비스의 응답은 구조화된 데이터를 나타내는 일반적인 형식인 JSON 형식으로 지정되는 경우가 많습니다.
  • JSON 객체는 키-값 쌍 모음입니다.
  • JSON 객체 모음은 JSON 배열입니다. 웹 서비스의 응답으로 JSON 배열을 받게 됩니다.
  • 키-값 쌍의 키는 따옴표로 묶입니다. 값은 숫자이거나 문자열일 수 있습니다.
  • Moshi 라이브러리는 JSON 문자열을 Kotlin 객체로 변환하는 Android JSON 파서입니다. Retrofit에는 Moshi와 호환되는 변환기가 있습니다.
  • Moshi는 JSON 응답의 키와 이름이 같은 데이터 객체의 속성을 일치시킵니다.
  • 키에 다른 속성 이름을 사용하려면 해당 속성에 @Json 주석과 JSON 키 이름으로 주석을 추가합니다.

 

728x90
반응형