안드로이드에서 JSON을 수동으로 처리하는 것이 정말 골칫거리라면 GraphQL을 살펴볼 때입니다. 기존 REST API때로는 필요하지 않은 데이터가 너무 많거나, 필요한 정보가 누락되어 세 번에 걸쳐 요청을 해야 하는 경우가 있습니다. 아폴로 코틀린 이 제품은 이러한 혼돈에 질서를 가져다주어, 원하는 것만 정확하게 주문할 수 있도록 해줍니다. 단 한 바이트도 더 주문할 필요가 없습니다.
이 도구가 강력한 이유는 단순히 요청만 하는 것이 아니라, 타입이 지정된 데이터 모델을 생성합니다. 서버 스키마를 기반으로 작동합니다. 값을 수동으로 형변환하거나 끝없는 Map 작업에 매달릴 필요가 없습니다. 여기서는 모든 것이 스키마에 대해 유효성 검사를 거치므로, 쿼리에서 요청하지 않은 필드에 접근하려고 하면 컴파일러가 앱 실행 전에 경고를 표시하여 예기치 않은 충돌을 방지합니다.
초기 구성 및 종속성
최신 프로젝트에서 이를 조립하기 시작하려면 파일을 사용하는 것이 가장 좋습니다. 빌드.gradle.kts먼저 플러그인 섹션에 Apollo 플러그인을 추가한 다음 런타임 종속성을 포함해야 합니다. 만약 다음과 같은 환경에서 작업하고 있다면, 코틀린 멀티플랫폼(KMP)Apollo는 iOS, macOS, watchOS를 포함한 여러 플랫폼용 코드 생성을 지원하므로 매우 유용한 도구입니다.
프로젝트를 깔끔하게 유지하려면 생성된 모델이 저장될 패키지 이름을 정의하는 것이 필수적입니다. 사용 중인 버전(4.x부터 최신 5.0.0까지)에 따라 약간의 차이가 있을 수 있지만, 기본 원리는 동일합니다. 플러그인이 정의 파일을 읽고 특정 Kotlin 클래스를 생성합니다. 정의하는 각 작업에 대해.
스키마 관리 및 쿼리
Apollo는 서버의 구조를 파악하기 위해 스키마 파일이 필요합니다. 이 스키마 파일은 다음과 같은 형태일 수 있습니다. .graphqls 파일 또는 .json 파일이를 달성하는 가장 간단한 방법은 터미널이나 GraphiQL 또는 Apollo Studio와 같은 도구를 사용하여 서버에서 스키마를 직접 다운로드하는 것입니다.
폴더에 다이어그램을 넣었으면 src/main/graphql파일 작성을 시작할 수 있습니다. .graphql여기서 당신의 정의를 내리세요 쿼리, 변경 및 구독프로젝트를 컴파일할 때 Apollo는 자동으로 클래스를 생성합니다(예: HeroQuery.kt서버를 호출하기 위해 인스턴스를 생성할 수 있는 객체입니다.
ApolloClient 구현
이 모든 것의 핵심은 수업입니다. 아폴로 클라이언트이 파일은 GraphQL 서버 엔드포인트와의 통신을 관리하는 역할을 합니다. 안드로이드에서 제대로 작동하려면 인터넷 권한을 추가하는 것을 잊지 마세요. AndroidManifest.xml에뮬레이터에서 테스트를 진행하고 서버가 localhost에 있는 경우, 해당 IP 주소로 평문 트래픽을 허용하도록 네트워크 보안 파일을 구성해야 합니다. 10.0.2.2.
요청을 실행하려면 클라이언트를 사용하고 생성된 쿼리를 전달하기만 하면 됩니다. 결과는 응답이 포함된 타입이 지정된 객체입니다. 더 고급 기능이 필요한 경우, 예를 들어 사용자 정의 스칼라 유형 (예를 들어 날짜를 처리하기 위해) build.gradle 파일에 매핑을 정의하고 특정 어댑터를 등록하면 Apollo가 해당 데이터를 변환하는 방법을 알 수 있습니다.
캐시 및 성능 전략
아폴로 우주선의 가장 큰 자랑거리 중 하나는 바로 저장 시스템입니다. 단순히 표면에만 머무르지 않고, 세 개의 뚜렷한 층으로 구성되어 있습니다. HTTP 응답 캐시 이것은 가공되지 않은 답변을 저장하는 반면, 정규화된 디스크 캐시 데이터를 SQL에 저장하여 앱이 오프라인 상태에서도 작동할 수 있도록 합니다. 마지막으로, 정규화된 인메모리 캐시 앱 프로세스가 실행 중인 동안 초고속 데이터에 액세스하는 데 이상적입니다.
또한, 기존 방식이나 신속한 대응이 요구되는 프로젝트 경험이 있는 경우, Apollo는 탄탄한 지원을 제공합니다. RxJava 1 및 2Apollo 호출을 Observable 또는 Single로 래핑하면 비동기 데이터 흐름과의 통합이 더 쉬워집니다. 단, 메모리 누수를 방지하기 위해 Disposable을 적절하게 관리해야 합니다.
Sentry를 이용한 모니터링 및 디버깅
앱이 실제 서비스에 투입되면 무엇이 잘못되고 있는지 알아야 합니다. 통합을 통해 이를 파악할 수 있습니다. 보초 이 기능을 사용하면 ApolloClient에 인터셉터를 추가하여 모든 HTTP 요청을 추적할 수 있습니다. 이를 통해 상세한 작업 내역을 자동으로 캡처할 수 있습니다. GraphQL 클라이언트 오류예를 들어 응답 코드 오류나 잘못된 작업 등을 작업 이름별로 그룹화합니다.
민감한 데이터 전송을 방지하려면 Sentry가 문자열 연결을 적용할 수 있으므로 쿼리에서 문자열을 직접 입력하는 대신 변수를 사용하는 것이 좋습니다. 개인 식별 정보(PII) 필터링 (개인 식별 정보)를 자동으로 수집합니다. 또한 어떤 이벤트를 수집할지 사용자 지정할 수도 있습니다. BeforeSendCallback데이터 레이어의 원격 측정 데이터를 완벽하게 제어할 수 있습니다.
이 클라이언트를 사용하면 데이터 중복을 제거하고 다음을 보장함으로써 Android 네트워크 아키텍처를 혁신할 수 있습니다. 프런트엔드와 백엔드 간의 통신 자동 코드 생성 덕분에 안전하고 효율적이며 유지 관리가 매우 쉽습니다.
