Quickstarters
Feature Overview
How to Build a Backend for Android?
45 분
소개 이 튜토리얼에서는 back4app을 사용하여 android (java) 애플리케이션의 완전한 백엔드를 구축하는 방법을 배웁니다 우리는 데이터베이스 관리, 클라우드 코드 기능, rest 및 graphql api, 사용자 인증, 실시간 쿼리(라이브 쿼리)와 같은 필수 back4app 기능을 통합하여 android 클라이언트와 원활하게 통신하는 안전하고 확장 가능하며 강력한 백엔드를 만드는 과정을 안내할 것입니다 back4app의 빠른 설정과 직관적인 환경이 서버와 데이터베이스를 수동으로 구성하는 것에 비해 시간과 노력을 크게 줄일 수 있는 방법도 확인할 수 있습니다 이 과정에서 고급 보안 기능, 클라우드 작업을 통한 작업 예약, 외부 통합을 위한 웹훅 설정 등 주요 기능에 대한 실습 경험을 쌓게 될 것입니다 이 튜토리얼이 끝나면 이 기본 설정을 프로덕션 준비 애플리케이션으로 향상시키거나 필요에 따라 사용자 정의 논리 및 타사 api를 쉽게 통합할 수 있는 준비가 될 것입니다 전제 조건 이 튜토리얼을 완료하려면 다음이 필요합니다 back4app 계정 및 새 back4app 프로젝트 back4app 시작하기 https //www back4app com/docs/get started/new parse app 계정이 없으면 무료로 만들 수 있습니다 위의 가이드를 따라 프로젝트를 준비하세요 기본 android (java) 개발 환경 이것은 android studio https //developer android com/studio 또는 유사한 도구를 사용하여 설정할 수 있습니다 최신 android sdk가 설치되어 있는지 확인하세요 java (버전 8 이상) android 프로젝트를 컴파일하고 실행하려면 java가 필요합니다 java 및 기본 android 개념에 대한 이해 android 개발자 문서 https //developer android com/docs android가 처음이라면 시작하기 전에 공식 문서나 초보자 튜토리얼을 검토하세요 시작하기 전에 모든 전제 조건이 준비되어 있는지 확인하세요 back4app 프로젝트가 설정되고 로컬 android 환경이 준비되어 있으면 더 쉽게 따라갈 수 있습니다 1단계 – back4app 프로젝트 설정 새 프로젝트 만들기 back4app에서 android 백엔드를 구축하는 첫 번째 단계는 새 프로젝트를 만드는 것입니다 아직 만들지 않았다면 다음 단계를 따르세요 back4app 계정에 로그인하기 “새 앱” 버튼 클릭하기 back4app 대시보드에서 앱 이름 지정하기 (예 “android backend tutorial”) 프로젝트가 생성되면 back4app 대시보드에 나열된 것을 볼 수 있습니다 이 프로젝트는 이 튜토리얼에서 논의된 모든 백엔드 구성의 기초가 될 것입니다 parse sdk 연결하기 back4app은 데이터를 관리하고, 실시간 기능을 제공하며, 사용자 인증을 처리하는 등 parse 플랫폼에 의존합니다 android 애플리케이션을 back4app에 연결하려면 parse android sdk를 설치하고 back4app 대시보드의 자격 증명으로 초기화해야 합니다 parse 키 가져오기 back4app 대시보드에서 앱의 “앱 설정” 또는 “보안 및 키” 섹션으로 이동하여 애플리케이션 id 와 클라이언트 키 (또는 javascript 키 가 표시된 경우) 찾으세요 또한 parse 서버 url 을 찾을 수 있습니다 (종종 https //parseapi back4app com ) 형식으로) parse sdk 설치 를 android 프로젝트에 추가하려면 다음 줄을 module level build gradle dependencies { implementation "com github parse community parse sdk android\ parse\ latest version here" } 루트 build gradle에서 jitpack 저장소가 필요하면 root build gradle allprojects { repositories { maven { url "https //jitpack io" } } } android 애플리케이션에서 parse 초기화 커스텀 application 클래스를 생성하고 (예 app java ) androidmanifest xml 을 구성합니다 package com example app; import android app application; import com parse parse; public class app extends application { @override public void oncreate() { super oncreate(); parse initialize(new parse configuration builder(this) applicationid("your app id") // from back4app clientkey("your client key") // from back4app server("https //parseapi back4app com/") build() ); } } 그런 다음, 이 커스텀 application 클래스를 androidmanifest xml 에 추가합니다 \<?xml version="1 0" encoding="utf 8"?> \<manifest > \<application android\ name=" app" > \</application> \</manifest> 이 단계를 완료하면 android 프론트엔드와 back4app 백엔드 간의 안전한 연결이 설정됩니다 모든 요청 및 데이터 거래는 이 sdk를 통해 안전하게 라우팅되어 수동 rest 또는 graphql 호출의 복잡성을 줄입니다 (필요할 때 여전히 사용할 수 있습니다) 2단계 – 데이터베이스 설정 데이터 저장 및 쿼리 back4app 프로젝트가 설정되고 parse sdk가 android 앱에 통합되면 이제 데이터를 저장하고 검색할 수 있습니다 레코드를 생성하고 저장하는 일반적인 방법은 parseobject 클래스를 사용하는 것입니다 parseobject gamescore = new parseobject("gamescore"); gamescore put("score", 1337); gamescore put("playername", "sean plott"); gamescore put("cheatmode", false); gamescore saveinbackground(e > { if (e == null) { // success! } else { // failed } }); 데이터를 쿼리하려면 parsequery\<parseobject> query = parsequery getquery("gamescore"); query whereequalto("playername", "sean plott"); query findinbackground((objects, e) > { if (e == null) { // objects now contains the results } else { // something went wrong } }); 또는 back4app의 rest api 엔드포인트를 사용할 수 있습니다 curl x post \\ h "x parse application id your application id" \\ h "x parse rest api key your rest api key" \\ h "content type application/json" \\ d '{"score" 1337, "playername" "sean plott", "cheatmode" false}' \\ https //parseapi back4app com/classes/gamescore back4app는 또한 graphql 인터페이스 mutation { creategamescore(input { fields { score 1337 playername "sean plott" cheatmode false } }) { gamescore { objectid score playername cheatmode } } } mutation { creategamescore(input { fields { score 1337 playername "sean plott" cheatmode false } }) { gamescore { objectid score playername cheatmode } } } 이 다양한 옵션을 통해 parse android sdk, rest 또는 graphql을 통해 개발 프로세스에 가장 적합한 방식으로 데이터 작업을 통합할 수 있습니다 스키마 설계 및 데이터 유형 기본적으로 parse는 실시간 스키마 생성 ,을 허용하지만, 더 많은 제어를 위해 back4app 대시보드에서 클래스와 데이터 유형을 정의할 수도 있습니다 back4app 대시보드에서 “데이터베이스” 섹션으로 이동합니다 새 클래스를 생성합니다 (예 “gamescore”) 및 관련 열을 추가합니다 back4app는 또한 다양한 데이터 유형을 지원합니다 문자열 , 숫자 , 부울 , 객체 , 날짜 , 파일 , 포인터, 배열, 관계 , 지오포인트 , 및 다각형 각 필드에 적합한 유형을 선택할 수 있습니다 back4app는 데이터 모델 설계를 도와줄 수 있는 ai 에이전트 를 제공합니다 앱 대시보드 또는 메뉴에서 ai 에이전트를 엽니다 간단한 언어로 데이터 모델을 설명합니다 (예 “새 todo 앱을 완전한 클래스 스키마로 생성해 주세요 ”) ai 에이전트가 스키마를 생성하도록 합니다 관계형 데이터 관계형 데이터가 있는 경우—예를 들어, 여러 개의 category 객체를 가리키는 gamescore 객체가 있는 경우—parse에서 pointers 또는 relations 를 사용할 수 있습니다 예를 들어 // linking a gamescore to a category with a pointer public void creategamescoreforcategory(string categoryobjectid, int scorevalue) { parseobject gamescore = new parseobject("gamescore"); // construct a pointer to the category parseobject categorypointer = parseobject createwithoutdata("category", categoryobjectid); // set fields gamescore put("score", scorevalue); gamescore put("category", categorypointer); gamescore saveinbackground(e > { if (e == null) { // success } else { // error } }); } 쿼리할 때 포인터 데이터를 포함할 수 있습니다 parsequery\<parseobject> query = parsequery getquery("gamescore"); query include("category"); query findinbackground((scores, e) > { if (e == null) { // scores now has category details } }); 실시간 쿼리 실시간 업데이트를 위해 back4app은 live queries android 앱에서 특정 클래스의 변경 사항을 구독할 수 있습니다 live queries 활성화하기 앱의 server settings 에서 back4app 대시보드에서 코드에서 live query 초기화하기 android에서는 일반적으로 parse livequery android 라이브러리 https //github com/parse community/parselivequery android 를 사용하여 구독합니다 단계는 다른 플랫폼과 유사하지만 livequeryclient 를 통합하게 됩니다 dependencies { implementation "com github parse community\ parselivequery android\ latest version here" } 그런 다음 livequeryclient livequeryclient = new livequeryclient builder("wss\ //your subdomain here b4a io", 443) build(); parsequery\<parseobject> query = parsequery getquery("gamescore"); subscriptionhandling\<parseobject> subscriptionhandling = livequeryclient subscribe(query); subscriptionhandling handleevents((query1, event, gamescore) > { switch (event) { case create // a new gamescore object was created break; case update // existing gamescore updated break; case delete // existing gamescore deleted break; default break; } }); 구독함으로써, 새로운 레코드가 생성되거나 업데이트되거나 삭제될 때마다 실시간 알림을 받게 됩니다 이 기능은 여러 사용자가 페이지를 새로 고치지 않고도 최신 데이터를 볼 수 있어야 하는 협업 또는 동적 앱에 특히 유용합니다 3단계 – acl 및 clp로 보안 적용하기 back4app 보안 메커니즘 back4app은 액세스 제어 목록 (acls) 및 클래스 수준 권한 (clps) 이러한 기능을 통해 객체별 또는 클래스별로 데이터를 읽거나 쓸 수 있는 사람을 제한할 수 있어, 권한이 있는 사용자만 데이터 수정이 가능합니다 액세스 제어 목록 (acls) 개별 객체에 acl 이 적용되어 어떤 사용자, 역할 또는 일반 대중이 읽기/쓰기 작업을 수행할 수 있는지를 결정합니다 예를 들어 public void createprivatescore(int scorevalue, parseuser owneruser) { parseobject gamescore = new parseobject("gamescore"); gamescore put("score", scorevalue); parseacl acl = new parseacl(owneruser); acl setpublicreadaccess(false); acl setpublicwriteaccess(false); gamescore setacl(acl); gamescore saveinbackground(e > { if (e == null) { // success } else { // failed } }); } 클래스 수준 권한 (clps) clps 는 클래스의 기본 권한을 관리하며, 클래스가 공개적으로 읽거나 쓸 수 있는지, 또는 특정 역할만 접근할 수 있는지를 결정합니다 back4app 대시보드로 이동 , 앱을 선택하고 데이터베이스 섹션을 엽니다 클래스를 선택 (예 “gamescore”) 클래스 수준 권한 탭을 엽니다 기본값을 구성합니다 이 권한은 기준선을 설정하며, acl은 개별 객체에 대한 권한을 세부 조정합니다 강력한 보안 모델은 일반적으로 clps(광범위한 제한)와 acls(세부적인 객체별 제한)를 결합합니다 자세한 내용은 앱 보안 가이드라인 https //www back4app com/docs/security/parse security 을 참조하세요 4단계 – 클라우드 코드 함수 작성 및 배포 클라우드 코드의 장점 클라우드 코드는 서버를 관리하거나 인프라를 필요로 하지 않고 서버 측에서 사용자 정의 javascript 코드를 실행할 수 있는 parse server 환경의 기능입니다 클라우드 코드를 작성함으로써 back4app 백엔드를 추가 비즈니스 로직, 검증, 트리거 및 parse server에서 안전하고 효율적으로 실행되는 통합으로 확장할 수 있습니다 예제 함수 클라이언트에서 전송된 텍스트 문자열의 길이를 계산하는 간단한 클라우드 코드 함수 main js parse cloud define('calculatetextlength', async (request) => { const { text } = request params; if (!text) { throw new error('no text provided'); } return { length text length }; }); 배포 back4app cli 대시보드 앱의 대시보드에서 클라우드 코드 > 함수 코드를 main js 에 복사/붙여넣기하고 배포 를 클릭하세요 함수 호출하기 parse sdk를 사용하여 android (java)에서 hashmap\<string, object> params = new hashmap<>(); params put("text", "hello back4app"); parsecloud callfunctioninbackground("calculatetextlength", params, (result, e) > { if (e == null) { // result is a hashmap; get the length map\<?, ?> mapresult = (map\<?, ?>) result; object lengthval = mapresult get("length"); // cast to number, etc } else { // handle error } }); 또한 rest 또는 graphql 를 통해 호출할 수 있습니다 이 유연성은 android 프론트엔드 또는 rest 또는 graphql을 지원하는 다른 클라이언트에 사용자 정의 논리를 통합할 수 있게 해줍니다 5단계 – 사용자 인증 구성 back4app의 사용자 인증 back4app은 parse user 클래스를 인증의 기초로 활용합니다 기본적으로 parse는 비밀번호 해싱, 세션 토큰 및 안전한 저장을 처리합니다 이는 복잡한 보안 흐름을 수동으로 설정할 필요가 없음을 의미합니다 사용자 인증 설정 java를 사용하는 android 애플리케이션에서 새 사용자를 생성할 수 있습니다 parseuser user = new parseuser(); user setusername("myusername"); user setpassword("mypassword"); user setemail("email\@example com"); user signupinbackground(e > { if (e == null) { // sign up success } else { // sign up failed } }); 기존 사용자 로그인 parseuser logininbackground("myusername", "mypassword", (parseuser, e) > { if (e == null) { // logged in successfully } else { // login failed } }); rest를 통해 로그인하면 다음과 같을 수 있습니다 curl x get \\ h "x parse application id your app id" \\ h "x parse rest api key your rest api key" \\ g \\ \ data urlencode 'username=alice' \\ \ data urlencode 'password=secret123' \\ https //parseapi back4app com/login 세션 관리 성공적으로 로그인한 후, parse는 세션 토큰 을 사용자 객체에 저장합니다 현재 로그인한 사용자를 확인할 수 있습니다 parseuser currentuser = parseuser getcurrentuser(); if (currentuser != null) { // user is logged in } else { // no user is logged in } 로그아웃할 수 있습니다 parseuser logout(); 소셜 로그인 통합 back4app과 parse는 google 또는 facebook 과 같은 인기 있는 oauth 제공자와 통합할 수 있습니다 예를 들어, facebook 로그인을 설정하려면 facebook app id 를 구성하고 android용 parse facebookutils를 사용해야 합니다 자세한 지침은 다를 수 있으므로 소셜 로그인 문서 https //www back4app com/docs/platform/sign in with apple 를 참조하세요 이메일 확인 및 비밀번호 재설정 이메일 확인 및 비밀번호 재설정을 활성화하려면 back4app 대시보드에서 이메일 설정 으로 이동합니다 이메일 확인을 활성화합니다 보낸 사람 주소 및 이메일 템플릿을 구성합니다 이것은 사용자의 이메일이 유효한지 확인하고 안전한 비밀번호 복구 방법을 제공합니다 6단계 – 파일 저장 처리 파일 업로드 및 검색 parse는 파일 업로드를 처리하기 위한 parsefile 클래스를 포함하고 있으며, back4app은 이를 안전하게 저장합니다 file file = new file("/path/to/image jpg"); byte\[] data = // read file as bytes parsefile parsefile = new parsefile("image jpg", data); parsefile saveinbackground(e > { if (e == null) { // file saved } else { // error } }); 파일을 객체에 첨부하세요 parseobject photo = new parseobject("photo"); photo put("imagefile", parsefile); photo saveinbackground(); 파일 url을 가져옵니다 parsefile imagefile = photo getparsefile("imagefile"); string url = imagefile geturl(); 파일 보안 parse server는 익명 사용자 또는 인증된 사용자가 파일을 업로드할 수 있는지 제어하는 것을 포함하여 파일 업로드 보안을 관리하기 위한 유연한 구성을 제공합니다 더 고급 구성을 위해 문서를 확인하세요 7단계 – 이메일 확인 및 비밀번호 재설정 개요 이메일 확인은 새로운 사용자가 가입에 사용된 이메일 주소를 소유하고 있는지 확인합니다 비밀번호 재설정은 사용자가 안전하게 계정을 복구할 수 있도록 합니다 back4app 대시보드 구성 이메일 확인 활성화 앱의 대시보드에서 이메일 설정 으로 이동하세요 비밀번호 재설정 활성화 비밀번호 재설정 이메일 흐름을 구성하세요 코드/구현 java에서 비밀번호 재설정을 트리거하는 방법 parseuser requestpasswordresetinbackground("email\@example com", e > { if (e == null) { // email sent } else { // something went wrong } }); 8단계 – 클라우드 작업으로 작업 예약하기 클라우드 작업 back4app의 클라우드 작업 을 사용하여 오래된 데이터 정리 또는 매일 이메일 전송과 같은 반복 작업을 예약하세요 예 parse cloud job('cleanupoldscores', async (request) => { const gamescore = parse object extend('gamescore'); const query = new parse query(gamescore); // e g , remove scores older than 30 days // }); 대시보드에서 예약하세요 back4app 대시보드 > 앱 설정 > 서버 설정 > 백그라운드 작업 step 9 – integrating webhooks webhooks let your back4app app send http requests to an external service whenever certain events occur, e g , sending data to a third party service like stripe navigate to webhooks in your back4app dashboard > more > webhooks add webhook with your external endpoint configure triggers for relevant events step 10 – exploring the back4app admin panel the back4app admin app is a web based management interface designed for non technical users it allows quick crud operations and routine data management without writing any code enabling the admin app go to app dashboard > more > admin app and click enable admin app 첫 번째 관리자 사용자 생성 및 서브도메인을 생성하면 데이터 관리용 웹 ui를 사용할 수 있습니다 결론 이 포괄적인 튜토리얼을 따라 하면서, 당신은 안전한 백엔드 생성 back4app에서 android (java) 앱을 위한 데이터베이스 구성 클래스 스키마, 데이터 유형 및 관계를 사용하여 실시간 쿼리 통합 (라이브 쿼리)로 즉각적인 데이터 업데이트 보안 조치 적용 acl 및 clp를 사용하여 데이터 접근을 보호하고 관리 클라우드 코드 구현 서버 측에서 사용자 정의 비즈니스 로직을 실행하는 기능 사용자 인증 설정 이메일 확인 및 비밀번호 재설정을 지원 파일 업로드 관리 선택적 파일 보안 제어와 함께 클라우드 작업 예약 자동화된 백그라운드 작업을 위해 웹훅 사용 외부 서비스와 통합하기 위해 back4app 관리자 패널 탐색 데이터 관리를 위해 견고한 android 프론트엔드(java)와 강력한 back4app 백엔드를 갖춘 당신은 이제 기능이 풍부하고 확장 가능하며 안전한 애플리케이션을 개발할 준비가 되어 있습니다 더 고급 기능을 탐색하고 비즈니스 로직을 통합하며 back4app의 힘을 활용하여 서버 및 데이터베이스 관리에서 수많은 시간을 절약하세요 즐거운 코딩 되세요! 다음 단계 생산 준비가 완료된 android 앱을 이 백엔드를 확장하여 더 복잡한 데이터 모델, 캐싱 전략 및 성능 최적화를 처리하세요 고급 기능 통합 전문 인증 흐름, 역할 기반 접근 제어 또는 외부 api(결제 게이트웨이와 같은)를 포함합니다 back4app의 공식 문서 확인 고급 보안, 성능 조정 및 로그 분석에 대한 심층적인 내용을 위해 다른 튜토리얼 탐색 실시간 채팅 애플리케이션, iot 대시보드 또는 위치 기반 서비스에 대해 여기서 배운 기술을 서드파티 api와 결합하여 복잡한 실제 애플리케이션을 만들 수 있습니다