본문 바로가기
📱| Android/📘 | 기록

[Android, Kotlin] Android에서 Apollo를 이용한 GraphQL사용하기

by immgga 2022. 10. 23.

현재 필자는 graphql를 이용한 프로젝트를 준비 중이기 때문에 graphql을 이용한 apollo에 대해 내가 공부한 것을 정리해보려고 한다.


Apollo는 android에서 graphql을 더 쉽게 이용할 수 있게 해주는 라이브러리이다.

 

1. Apollo 설치하기

apollo를 android에서 이용하기 위해서는 node.js를 설치해야 한다.

https://javacpro.tistory.com/62

 

[Node.js] Node.js 설치하기 (Windows10)

Node.js 설치하기 Node.js 설치는 매우 간단하다 . 우선 아래 URL 을 따라 Node.js 사이트에 접속한다. https://nodejs.org/en/ 그럼 위와 같이 화면이 나오는데 먼저 좌측으로는 최신버전 인데 개발공부를 목

javacpro.tistory.com

 

설치를 하고 나면

android studio -> Terminal으로 이동하고

npm install apollo-cli

를 입력한다.

 

2. Gradle 적용하기

apollo 버전을 확인하는 깃허브

https://github.com/apollographql/apollo-kotlin

 

GitHub - apollographql/apollo-kotlin:  A strongly-typed, caching GraphQL client for the JVM, Android, and Kotlin multiplatform.

:robot:  A strongly-typed, caching GraphQL client for the JVM, Android, and Kotlin multiplatform. - GitHub - apollographql/apollo-kotlin:  A strongly-typed, caching GraphQL client for the JVM, Andr...

github.com

버전을 확인한 후, gradle에 적용해보자.

 

app단위 gradle에 다음을 추가한다.

plugins {
    . . .
    id("com.apollographql.apollo3").version("version")
}
android {
	apollo {
 	   packageName.set("com.example.graphql")
	}
}
dependencies {
    // apollo
    implementation("com.apollographql.apollo3:apollo-runtime:3.6.2")

    // coroutine
    implementation "org.jetbrains.kotlinx:kotlinx-coroutines-core:1.6.1"
    implementation "org.jetbrains.kotlinx:kotlinx-coroutines-android:1.6.1"

    // life cycle
    implementation "androidx.lifecycle:lifecycle-runtime-ktx:2.5.1"
}

 

gradle 적용은 이걸로 끝났다.

 

 

3. package 생성

gradle에 추가한 코드대로

패키지를 생성해준다.

 

android -> project

 

app -> src -> main으로 이동 후

grapgql -> (com -> example -> graphql) gradle에서 설정한 주소로

패키지를 생성한다.

패키지 생성

4. schema 파일 다운로드

terminal로 이동 후 다음 명령어를 입력한다(예제로 https://rickandmortyapi.com/graphql 사이트를 사용했다.)

./gradlew downloadApolloSchema --endpoint="endpoint"
 --schema="app/src/main/설정한 주소/schema.graphql"

 

./gradlew downloadApolloSchema --endpoint="https://rickandmortyapi.com/graphql"
 --schema="app/src/main/graphql/com/simpli/graphql/schema.graphql"

저 화면이 뜨면 정상적으로 파일이 다운로드 된 것이다.

 

5. graphQL plugin 설치

file -> settings -> plugins -> graphql 검색

graphql을 설치한다.

 

5. query 파일 생성

아까 schema.graphql을 설치한 곳에다가 생성한다.

쿼리를 작성한다.

result.graphql

query Result {
    characters {
        results {
            name
            species
            gender
            image
        }
    }
}

 

쿼리를 작성하고 나면, build -> rebuild project를 꼭 해준다.

 

https://rickandmortyapi.com/graphql  들어가면 작성한 쿼리를 테스트 해볼 수 있다.

 

6. Activity에 적용

간단히 값만 잘 나오나 테스트하기 위해 텍스트뷰에다가 나오게 해 보았다.

import android.os.Bundle
import android.widget.TextView
import androidx.appcompat.app.AppCompatActivity
import androidx.lifecycle.lifecycleScope
import com.apollographql.apollo3.ApolloClient
import com.example.graphql.ResultQuery
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.launch

class MainActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        val apolloClient = ApolloClient.Builder()
            .serverUrl("https://rickandmortyapi.com/graphql/")
            .build()

        lifecycleScope.launch(Dispatchers.Main) {
            val result = apolloClient.query(ResultQuery()).execute()
            val text = findViewById<TextView>(R.id.text_view)
            text.text = result.data.toString()
        }
    }
}

 

 

7.  결과

정상적으로 결과가 나왔다.


느낀 점

원래 rest api만 사용하다가 graphql을 사용하니 상당히 복잡했다.

하지만 공부해 놓으면 나중에 도움이 될 것 같다.

728x90