Quickstarters
Feature Overview
How to Build a Backend for Dart?
25 분
소개 이 튜토리얼에서는 dart용 백엔드를 구축하는 방법 을 배우게 됩니다 우리는 데이터베이스 관리, 클라우드 코드 함수, rest 및 graphql api, 사용자 인증, 실시간 쿼리(라이브 쿼리)와 같은 필수 back4app 기능을 dart 기반 프로젝트에 통합하는 데 집중할 것입니다 dart는 다재다능한 프로그래밍 언어이므로 간단한 웹 서버부터 전체 규모의 애플리케이션에 이르기까지 다양한 백엔드 프로젝트에 사용할 수 있습니다 back4app의 직관적인 환경을 활용하면 무거운 서버 유지 관리 없이 빠르게 강력하고 안전한 백엔드 프레임워크를 설정할 수 있습니다 acl, clp, 백그라운드 작업 예약, 클라우드 코드로 사용자 정의 논리 생성과 같은 기능이 서버 측 작업을 어떻게 간소화하는지 확인할 수 있습니다 이 튜토리얼을 완료한 후에는 dart 백엔드를 확장하거나 더 고급 통합을 추가할 준비가 될 것입니다 전제 조건 이 튜토리얼을 완료하려면 다음이 필요합니다 back4app 계정과 새로운 back4app 프로젝트 back4app 시작하기 https //www back4app com/docs/get started/new parse app 계정이 없으면 무료로 만들 수 있습니다 기본 dart 개발 환경 dart sdk와 원하는 편집기를 설치하여 설정할 수 있습니다 자세한 내용은 dart sdk 받기 https //dart dev/get dart dart 2 0 이상 환경이 최신 상태인지 확인하여 최근 dart 기능과 패키지 선반 또는 기타 서버 측 라이브러리를 활용할 수 있도록 합니다 dart 및 백엔드 개념에 대한 친숙함 dart가 처음이라면 dart 공식 문서 https //dart dev/guides 를 검토하여 기본적인 유창성을 기르세요 시작하기 전에 이러한 모든 전제 조건이 준비되어 있는지 확인하세요 back4app 프로젝트가 준비되고 로컬 dart 환경이 제대로 구성되어 있으면 더 쉽게 따라할 수 있습니다 1단계 – back4app에서 새 프로젝트 만들기 및 연결하기 왜 새로운 back4app 프로젝트를 만들어야 하나요? 새로운 back4app 프로젝트는 데이터베이스, 보안, api, 파일 저장소 등을 관리하는 백엔드의 기초를 형성합니다 dart 기반 서버 측 논리를 구축할 수 있는 조직적인 구조를 제공합니다 back4app 프로젝트 만들기 back4app 계정에 로그인합니다 back4app 대시보드에서 “새 앱” 을 클릭합니다 앱에 설명적인 이름을 지정합니다(예 “dart backend tutorial”) 한 번 생성되면, 귀하의 프로젝트는 back4app 대시보드에 나타납니다 이 프로젝트는 dart 애플리케이션의 모든 백엔드 설정을 구성하는 곳입니다 parse sdk 설치 및 연결 dart에는 공식 parse sdk가 없지만, parse server sdk 와 같은 커뮤니티 유지 관리 라이브러리가 back4app 통합을 가능하게 합니다 다음 종속성을 dart 프로젝트의 pubspec yaml 에 포함하여 추가할 수 있습니다 dependencies parse server sdk ^4 0 0 # example version 그런 다음 실행하십시오 dart pub get parse 초기화 를 dart 코드에서 (예 main dart 파일에서) import 'package\ parse server sdk/parse server sdk dart'; future\<void> main() async { const keyapplicationid = 'your application id'; const keyclientkey = 'your javascript key'; const keyparseserverurl = 'https //parseapi back4app com'; await parse() initialize( keyapplicationid, keyparseserverurl, clientkey keyclientkey, autosendsessionid true, ); // your dart server logic goes here print('parse initialized with back4app!'); } back4app 대시보드에서 애플리케이션 id , javascript 키 , 및 parse 서버 url 을 가져옵니다 ( “앱 설정” > “보안 및 키”에서) 이 단계로 dart 애플리케이션이 back4app 백엔드 프레임워크와 안전하게 상호작용할 수 있습니다 2단계 – 데이터베이스 설정 데이터 모델 생성 back4app 대시보드에서 “데이터베이스” 섹션으로 이동하여 새 클래스를 생성합니다 (예 “todo”) title (string) 및 iscompleted (boolean)과 같은 필드에 대한 열을 추가합니다 ai 에이전트를 사용하여 데이터 모델 생성 앱 대시보드에서 ai 에이전트를 엽니다 원하는 스키마를 설명합니다 (예 “제발 title 및 iscompleted 필드가 있는 todo 클래스를 생성해 주세요 ”) ai 에이전트가 스키마를 최종화하도록 합니다 sdk를 사용한 데이터 읽기 및 쓰기 parse server sdk 라이브러리를 사용하면 dart 코드에서 데이터를 저장하고 쿼리할 수 있습니다 예를 들어 import 'package\ parse server sdk/parse server sdk dart'; future\<parseobject?> createtodoitem(string title, bool iscompleted) async { final todo = parseobject('todo') set('title', title) set('iscompleted', iscompleted); final response = await todo save(); if (response success && response result != null) { print('todo created ${response result}'); return response result as parseobject; } else { print('error creating todo ${response error? message}'); return null; } } future\<list\<parseobject>?> fetchtodos() async { final query = querybuilder\<parseobject>(parseobject('todo')); final response = await query query(); if (response success && response results != null) { return response results as list\<parseobject>; } else { print('error fetching todos ${response error? message}'); return null; } } 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 '{"title" "buy groceries", "iscompleted" false}' \\ https //parseapi back4app com/classes/todo graphql api를 사용한 데이터 읽기 및 쓰기 mutation { createtodo(input { fields { title "clean the house" iscompleted false } }) { todo { objectid title iscompleted } } } 실시간 쿼리 작업하기 (선택 사항) 실시간 업데이트를 활성화하려면 back4app 대시보드(서버 설정)에서 실시간 쿼리를 켜십시오 그런 다음 dart에서 구독할 수 있지만, 전문 라이브러리가 필요할 수 있습니다 parse server sdk 라이브러리는 부분적인 실시간 쿼리 지원이 있을 수 있으니, 자세한 내용은 문서를 확인하십시오 3단계 – acl 및 clp로 보안 적용하기 개요 acls (액세스 제어 목록) 객체 수준에서 읽기/쓰기를 제한합니다 clps (클래스 수준 권한) 클래스 수준에서 읽기/쓰기를 제한합니다 단계별 클래스 수준 권한 back4app 대시보드에서 데이터베이스 섹션을 열고, 클래스를 선택한 후 “보안” 아래에서 clps를 구성합니다 코드에서의 acls (parse server sdk 사용) future\<parseobject?> createprivatetodo(string title, parseuser owneruser) async { final todo = parseobject('todo') set('title', title); final acl = \<string, dynamic>{}; // grant read/write to the owner acl\[owneruser objectid!] = {"read" true, "write" true}; // disable public read/write acl\[' '] = {"read" false, "write" false}; todo setacl(acl); final response = await todo save(); if (response success && response result != null) { return response result as parseobject; } else { print('error setting acl ${response error? message}'); return null; } } 4단계 – 클라우드 코드 함수 작성 클라우드 코드의 필요성 클라우드 코드는 서버 측에서 사용자 정의 비즈니스 로직을 생성하는 데 필수적입니다 이는 자체 인프라를 관리할 필요가 없게 해주며, 코드를 안전하고 확장 가능하게 유지합니다 예제 함수 및 트리거 당신의 main js (클라우드 코드용) // main js parse cloud define('hellodart', (request) => { return `hello from dart and back4app, ${request params name || 'guest'}!`; }); parse cloud beforesave('todo', (request) => { const todo = request object; if (!todo get('title')) { throw 'each todo needs a title!'; } }); 배포 back4app cli 사용 대시보드 사용 클라우드 코드로 가기 > 함수 코드를 main js 에 붙여넣기 클릭 배포 npm 및 클라우드 코드 클라우드 코드에 추가 npm 모듈이 필요한 경우, 프로젝트의 package json 이를 통해 외부 api 또는 고급 작업을 서버 측 코드에서 직접 통합할 수 있습니다 5단계 – 인증 구성 사용자 인증 활성화 back4app 대시보드에서 이메일 인증을 활성화하거나 소셜 로그인을 설정할 수 있습니다 기본적으로 parse 사용자 클래스는 비밀번호를 안전하게 저장합니다 코드 샘플 (dart에서 parse server sdk 사용) import 'package\ parse server sdk/parse server sdk dart'; future\<void> signupuser(string username, string password, string email) async { final user = parseuser(username, password, email); final response = await user signup(); if (response success) { print('user signed up ${response result}'); } else { print('error ${response error? message}'); } } future\<void> loginuser(string username, string password) async { final user = parseuser(username, password, null); final response = await user login(); if (response success) { print('user logged in ${response result}'); } else { print('error ${response error? message}'); } } 소셜 로그인 back4app 대시보드에서 google, apple, 또는 facebook 과 같은 제공자를 구성하세요 해당 parse server sdk 플러그인 또는 사용 가능한 경우 사용자 정의 oauth 흐름을 구현하세요 6단계 – 파일 저장 처리 파일 저장 설정 back4app은 parse api를 통해 업로드한 파일을 자동으로 호스팅합니다 이미지, 문서 또는 모든 파일 유형을 저장할 수 있습니다 예시 (dart) 보안 고려사항 back4app 대시보드에서 clp 또는 사용자 역할을 조정하여 파일을 업로드하거나 검색할 수 있는 사람을 제어할 수 있습니다 7단계 – 이메일 확인 및 비밀번호 재설정 개요 이메일 확인은 사용자가 등록한 이메일을 소유하고 있음을 확인하며, 비밀번호 재설정 링크는 분실된 자격 증명을 관리하는 안전한 방법을 제공합니다 back4app 대시보드 구성 이동 앱 설정 > 이메일 사용자 이메일 확인 및 비밀번호 재설정 을 활성화합니다 필요에 따라 이메일 템플릿을 사용자 정의합니다 구현 사용자가 유효한 이메일로 가입하면 이메일 확인 링크를 받습니다 비밀번호 재설정을 위해 parseuser의 requestpasswordreset 메서드(파스 서버 sdk에서 사용 가능한 경우) 또는 rest 엔드포인트를 호출합니다 8단계 – 클라우드 작업으로 작업 예약하기 클라우드 작업의 기능 클라우드 작업을 사용하면 정해진 간격으로 작업을 예약할 수 있습니다 예를 들어 오래된 기록을 정리하거나 주기적인 보고서를 전송하는 작업입니다 이들은 사용자 트리거 작업과 독립적으로 백그라운드에서 작동합니다 예시 main js , 추가 parse cloud job('cleanupoldtodos', async (request) => { const todo = parse object extend('todo'); const query = new parse query(todo); const now = new date(); const thirty days = 30 24 60 60 1000; const cutoff = new date(now thirty days); query lessthan('createdat', cutoff); try { const oldtodos = await query find({ usemasterkey true }); await parse object destroyall(oldtodos, { usemasterkey true }); return `deleted ${oldtodos length} old todos `; } catch (err) { throw new error('error during cleanup ' + err message); } }); 일정 설정 이동 앱 설정 > 서버 설정 > 백그라운드 작업 일정 cleanupoldtodos 를 매일 또는 선택한 간격으로 실행되도록 설정합니다 9단계 – 웹훅 통합 정의 웹훅은 back4app 앱이 특정 이벤트에서 외부 서비스에 http 요청을 할 수 있게 해줍니다 이는 slack이나 stripe와 같은 서드파티 서비스와 통합하는 데 유용합니다 구성 이동 더보기 > 웹훅 에서 back4app 대시보드 클릭 웹훅 추가 하고 엔드포인트를 제공하세요 (예 https //your external service com/webhook endpoint ) 트리거 이벤트를 지정하세요 (예 todo가 생성된 후) 예시 슬랙 웹훅 url이 있는 경우, 새 todo가 삽입될 때마다 알림을 받을 수 있도록 설정할 수 있습니다 dart 백엔드와 외부 도구 간의 원활한 연결은 자동화를 향상시킵니다 10단계 – back4app 관리 패널 탐색 찾는 방법 back4app 콘솔에서 더보기 > 관리 앱 을 열고 패널을 활성화합니다 기능 데이터베이스 레코드를 쉽게 관리합니다 로그, 백그라운드 작업 및 분석을 검토합니다 사용자 접근 및 역할을 제어합니다 결론 이 단계를 따르면 다음을 수행했습니다 dart를 위한 안전한 백엔드를 구축했습니다 back4app에서 parse 클래스와 필드를 통해 데이터베이스를 관리했습니다 서버 측 논리를 처리하기 위해 사용자 정의 cloud code를 생성했습니다 acl, clp 및 사용자 인증을 사용하여 데이터를 보호했습니다 cloud jobs를 사용하여 백그라운드 작업을 예약했습니다 webhooks를 사용하여 외부 서비스를 통합했습니다 데이터 관리를 쉽게 하기 위해 관리자 패널을 탐색했습니다 이 탄탄한 기초는 전체 규모의 웹 서버, 마이크로서비스 또는 특수 애플리케이션을 구축하든 dart 프로젝트를 효율적으로 배포할 수 있도록 준비시킵니다 여기에서 백엔드 프레임워크를 확장하고, 더 복잡한 로직을 추가하거나 푸시 알림 또는 고급 분석과 같은 고급 기능을 통합할 수 있습니다 다음 단계 생산 준비 상태 탐색 캐싱 전략을 사용하고, 동시성을 처리하며, 높은 트래픽을 위한 성능을 최적화합니다 고급 기능 통합 역할 기반 접근 제어, 더 많은 소셜 로그인 또는 실시간 협업 도구와 같은 기능입니다 공식 back4app 문서 확인 로그, 보안 및 성능 조정에 대한 더 깊은 통찰력을 제공합니다 실험 패키지 shelf와 같은 추가 패키지를 사용하여 parse 기반 데이터 레이어와 함께 사용자 정의 웹 서버를 생성하고 dart의 유연한 프로그래밍 언어로서의 기능을 활용합니다 dart의 백엔드를 구축하는 방법에 대한 이 지식을 통해 데이터 처리, 서버 측 프로세스 보안 및 앱의 워크플로 자동화를 위한 강력한 방법을 갖추게 되며, 이는 상당한 인프라 오버헤드 없이 가능합니다