현재 필자는 graphql를 이용한 프로젝트를 준비 중이기 때문에 graphql을 이용한 apollo에 대해 내가 공부한 것을 정리해보려고 한다.
Apollo는 android에서 graphql을 더 쉽게 이용할 수 있게 해주는 라이브러리이다.
1. Apollo 설치하기
apollo를 android에서 이용하기 위해서는 node.js를 설치해야 한다.
https://javacpro.tistory.com/62
설치를 하고 나면
android studio -> Terminal으로 이동하고
npm install apollo-cli
를 입력한다.
2. Gradle 적용하기
apollo 버전을 확인하는 깃허브
https://github.com/apollographql/apollo-kotlin
버전을 확인한 후, 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을 사용하니 상당히 복잡했다.
하지만 공부해 놓으면 나중에 도움이 될 것 같다.
'📱| Android > 📘 | 기록' 카테고리의 다른 글
[Android, Kotlin] Zxing 라이브러리로 QR코드 스캔하기 (4) | 2023.03.11 |
---|---|
[Android, Kotlin] android custom dialog 만들기 (5) | 2022.11.20 |
[Android, Kotlin] editText의 toggle icon이 반대로 되었을 때 해결 방법 (2) | 2022.08.31 |
[Android/Kotlin] retrofit2 정리 (0) | 2022.05.13 |
[Android] 화면 이동 방법 정리 (0) | 2022.04.12 |