Quickstarters
Feature Overview
Swift용 백엔드를 구축하는 방법?
43 분
소개 이 튜토리얼에서는 back4app을 사용하여 swift 애플리케이션의 완전한 백엔드를 구축하는 방법을 배웁니다 데이터베이스 관리, 클라우드 코드 함수, rest 및 graphql api, 사용자 인증, 실시간 쿼리(라이브 쿼리) 등과 같은 필수 back4app 기능을 통합하여 swift 기반 클라이언트 앱과 원활하게 통신하는 안전하고 확장 가능하며 강력한 백엔드를 생성하는 과정을 안내합니다 back4app의 빠른 설정과 직관적인 환경을 활용하면 서버와 데이터베이스를 수동으로 구성하는 것에 비해 필요한 시간과 노력을 크게 줄일 수 있습니다 이 과정에서 고급 보안 기능, 클라우드 작업을 통한 작업 예약, 외부 통합을 위한 웹훅 설정 등 중요한 기능에 대한 실습 경험을 쌓게 됩니다 이 튜토리얼이 끝날 무렵, 여러분은 이 기본 백엔드 서비스를 프로덕션 준비가 완료된 애플리케이션으로 향상시키거나 필요에 따라 사용자 정의 논리 및 타사 api를 쉽게 통합할 수 있는 준비가 잘 되어 있을 것입니다 baas 플랫폼과 함께 작업하는 것이 백엔드 개발을 보다 간소화된 경험으로 변화시킬 수 있는 방법을 보게 될 것입니다 특히 빠른 백엔드 또는 기타 백엔드 애플리케이션을 만들 때 그렇습니다 시작해 봅시다! 전제 조건 이 튜토리얼을 완료하려면 다음이 필요합니다 back4app 계정과 새로운 back4app 프로젝트 back4app 시작하기 https //www back4app com/docs/get started/new parse app 계정이 없으신 경우, 무료로 생성할 수 있습니다 위의 가이드를 따라 프로젝트를 준비하세요 swift 개발 환경 swift를 사용하여 ios 또는 macos 애플리케이션을 만들기 위해 xcode https //developer apple com/xcode/ 를 ide로 사용할 수 있습니다 최신 안정 버전의 xcode가 설치되어 있는지 확인하세요 swift 프로그래밍 언어에 대한 친숙함 swift가 처음이라면, 공식 swift 문서 https //swift org/documentation/ 또는 초보자 튜토리얼을 검토한 후 시작하세요 parse swift sdk cocoapods를 사용하는 경우, pod 'parseswiftog' 를 podfile에 추가하세요 또는 swift package manager를 사용하는 경우, package(url "https //github com/netreconlab/parse swift git", from "5 0 0") 를 종속성에 추가하세요 자세한 내용은 parse swift 문서 https //docs parseplatform org/parse swift/guide/ 를 읽어보세요 시작하기 전에 이러한 모든 전제 조건이 준비되어 있는지 확인하세요 back4app 프로젝트를 설정하고 로컬 swift 환경을 준비하면 더 쉽게 따라할 수 있습니다 1단계 – back4app에서 새 프로젝트 만들기 및 연결하기 back4app에서 swift 백엔드를 구축하는 첫 번째 단계는 새 프로젝트를 만드는 것입니다 이 프로젝트는 이 튜토리얼에서 논의된 모든 백엔드 구성의 기초입니다 swift는 parse swift sdk를 사용하여 새 백엔드에 원활하게 연결할 수 있습니다 방법을 살펴보겠습니다 새 프로젝트 만들기 back4app 계정에 로그인하세요 back4app 대시보드에서 “새 앱” 버튼을 클릭하세요 앱 이름을 정하세요 (예 “swift backend tutorial”) 생성 후, 대시보드에 새 앱이 나열된 것을 볼 수 있습니다 여기에서 데이터베이스, 클라우드 함수 및 백엔드 앱에 대한 기타 중요한 설정을 구성할 수 있습니다 parse swift sdk 연결하기 back4app은 데이터베이스, 실시간 업데이트, 인증 등을 위한 기반을 제공하는 parse 플랫폼에 의해 구동됩니다 귀하의 swift 애플리케이션은 parse swift sdk를 설치하고 초기화하여 back4app에 연결할 수 있습니다 parse 키 가져오기 back4app 대시보드에서 앱의 “앱 설정” 또는 “보안 및 키”로 이동하여 애플리케이션 id 와 클라이언트 키 를 찾으세요 또한 parse 서버 url (종종 https //parseapi back4app com )를 볼 수 있습니다 parse swift sdk 설치 swift 패키지 관리자 (추천) dependencies \[ package(url "https //github com/netreconlab/parse swift git", from "5 0 0") ] cocoapods pod 'parseswiftog' 앱에서 parse 초기화 이 작업은 swift 프로젝트의 주요 진입점(예 appdelegate swift 또는 swiftui @main 구조체)에서 수행할 수 있습니다 예를 들어 import swiftui import parseswift @main struct myapp app { init() { // replace placeholders with your back4app credentials parseswift initialize( applicationid "your application id", clientkey "your client key", serverurl url(string "https //parseapi back4app com")! ) } var body some scene { windowgroup { contentview() } } } 이 설정을 통해 swift 클라이언트는 이제 back4app에 안전한 요청을 보낼 수 있습니다 수동 rest 또는 graphql 호출 없이 데이터 작업을 단순화하는 강력한 연결을 설정했습니다(원하는 경우 여전히 사용할 수 있습니다) 2단계 – 데이터베이스 설정 이 단계에서는 back4app에서 백엔드 데이터베이스를 구성하고 swift 코드에서 데이터를 관리하는 방법을 살펴봅니다 back4app은 parse 데이터 모델을 사용하여 클래스와 유사한 구조에 객체를 저장할 수 있습니다 swift는 parse swift sdk를 통해 이러한 클래스와 쉽게 상호작용할 수 있습니다 데이터 모델 만들기 back4app 대시보드에서 “데이터베이스” 섹션으로 이동하세요 새 클래스를 만드세요 (예 “todo”) 필요한 데이터에 대한 열을 추가하세요 (예 “title” (string) 및 “iscompleted” (boolean)) 객체를 처음 저장할 때 parse swift sdk가 이러한 열을 자동으로 생성하도록 할 수 있습니다 어떤 방식이든, 귀하의 스키마는 저장하는 데이터와 일치해야 하므로 귀하의 앱이 원활하게 처리할 수 있습니다 ai 에이전트를 사용하여 데이터 모델 만들기 back4app은 데이터 모델 설계를 도와줄 수 있는 ai 에이전트를 제공합니다 ai 에이전트를 앱 대시보드 또는 메뉴에서 엽니다 자연어로 데이터 모델을 설명합니다 예 “새로운 swift 프로젝트를 todo 클래스 스키마로 생성해 주세요 ” ai 에이전트가 스키마를 자동으로 생성하도록 합니다 데이터 읽기 및 쓰기 parse swift sdk parse swift sdk를 사용하여 parseobject 에 준수하는 구조체를 생성하여 데이터를 나타낼 수 있습니다 예를 들어, todo 클래스가 있는 경우 import parseswift struct todo parseobject { // parseobject protocol properties var objectid string? var createdat date? var updatedat date? var acl parseacl? var originaldata data? // custom properties var title string? var iscompleted bool? } todo 객체를 생성하고 저장합니다 var newtodo = todo() newtodo title = "buy groceries" newtodo iscompleted = false task { do { let saved = try await newtodo save() print("saved ", saved) } catch { print("error saving todo ", error) } } 모든 할 일 항목 조회 task { do { let todos = try await todo query() find() print("todos ", todos) } catch { print("error fetching ", error) } } 데이터 읽기 및 쓰기 rest api 표준 http 요청을 선호하는 경우 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" "walk the dog", "iscompleted" false}' \\ https //parseapi back4app com/classes/todo 데이터 읽기 및 쓰기 graphql api graphql도 지원됩니다 다음은 할 일을 생성하기 위한 샘플 뮤테이션입니다 mutation { createtodo(input { fields { title "finish homework" iscompleted false } }) { todo { objectid title iscompleted } } } 실시간 쿼리 작업하기 당신의 swift 앱이 실시간 업데이트가 필요하다면, back4app은 실시간 쿼리를 지원합니다 ios의 경우 실시간 쿼리 활성화 당신의 앱의 서버 설정 에서 연결하기 당신의 앱에서 parse livequeryserverurl 를 지정하여 parse configuration serverurl = url(string "https //parseapi back4app com")! parse configuration livequeryserverurl = url(string "wss\ //your subdomain b4a io")! 실시간 업데이트 구독하기 let subscription = todo query() subscribecallback { subscriptionstate in switch subscriptionstate { case subscribed(let querysubscription) print("subscribed to todo changes!") default break } } 이제 todo가 생성되거나 업데이트되거나 삭제될 때마다, 실시간으로 업데이트를 받을 수 있습니다 이는 swift 백엔드 개발에서 협업 또는 시간에 민감한 기능에 특히 유용합니다 3단계 – acl 및 clp를 통한 보안 적용 acl과 clp란 무엇인가? back4app은 액세스 제어 목록 (acl) 및 클래스 수준 권한 (clp) 을 사용하여 데이터를 보호합니다 acl은 객체별 권한을 정의할 수 있게 해주고, clp는 전체 클래스에 대한 기본 액세스 규칙을 설정합니다 클래스 수준 권한 back4app 대시보드에서 “ 데이터베이스 ”로 가서 클래스를 선택합니다 (예 “todo”) “ 클래스 수준 권한 ”을 엽니다 읽기, 쓰기 또는 공개 액세스에 대한 제한을 구성합니다 액세스 제어 목록 (acl) swift에서 parseobject를 생성하거나 업데이트할 때 acl을 설정할 수 있습니다 예를 들어 var acl = parseacl() // only let the current user read and write acl setreadaccess(userid "current user id", value true) acl setwriteaccess(userid "current user id", value true) var todo = todo() todo acl = acl 이것은 지정된 사용자만 해당 객체를 읽거나 수정할 수 있도록 보장합니다 acl과 clp를 결합하면 앱 데이터에 대한 강력하고 계층화된 보안 모델을 형성합니다 4단계 – 클라우드 코드 함수 작성 클라우드 코드가 필요한 이유? 클라우드 코드는 클라이언트에 비밀을 노출하지 않고 서버 측 swift 로직(또는 원래 parse cloud code 스타일을 사용하는 경우 javascript)을 실행할 수 있게 해줍니다 유효성 검사, 트리거, 예약된 작업 등에 적합합니다 예제 함수 여기 javascript 기반의 예제가 있지만, typescript로 작업하거나 swift에서 호출할 수도 있습니다 back4app cloud code 폴더에서 main js parse cloud define("gettaskscount", async (request) => { const query = new parse query("todo") const count = await query count({ usemasterkey true }) return count }) parse cloud beforesave("todo", async (request) => { const todo = request object if (!todo get("title")) { throw "cannot save a todo without a title " } }) npm 모듈을 설치하려면 package json 파일에 포함시키고, main js 에서 호출하면 됩니다 배포가 완료되면 callfunction 을 사용하여 swift 코드에서 이러한 함수를 호출할 수 있습니다 배포 다음 경로를 통해 cloud code를 배포하세요 b4a deploy 또한 back4app 대시보드를 통해 cloud code > functions 로 이동하여 배포할 수 있습니다 온라인 편집기에 코드를 붙여넣고 배포 를 클릭하세요 swift에서 호출하기 task { do { let result = try await parsecloud callfunction("gettaskscount", with \[string any]\()) print("count ", result) } catch { print("error calling cloud function ", error) } } 5단계 – 인증 구성 사용자 인증 활성화 back4app의 대시보드 , 사용자 계정을 위한 기본 user 클래스가 표시됩니다 필요에 따라 앱의 인증 설정 에서 추가 인증 제공자(apple, facebook, google 등)를 활성화하세요 가입 및 로그인 (swift) struct user parseuser { var objectid string? var username string? var email string? var password string? var emailverified bool? var createdat date? var updatedat date? var acl parseacl? var originaldata data? } // sign up task { do { var newuser = user() newuser username = "alice" newuser password = "p\@ssword" let signedup = try await newuser signup() print("user signed up ", signedup) } catch { print("error signing up ", error) } } // log in task { do { let user = try await user login(username "alice", password "p\@ssword") print("logged in user ", user) } catch { print("error logging in ", error) } } 소셜 로그인 back4app는 google, apple 및 facebook과의 oauth 로그인을 지원합니다 이러한 제공자를 인증 설정 페이지에서 구성하고, swift 앱에서 관련 parse swift 통합 코드를 사용하여 인증 흐름을 처리하세요 (예 parsefacebookutils 또는 parseappleutils ) 자세한 내용은 소셜 로그인 문서 https //www back4app com/docs/platform/sign in with apple 를 참조하세요 6단계 – 파일 저장 처리 파일 저장 설정 back4app에 이미지, 비디오 또는 모든 파일을 저장할 수 있습니다 swift에서는 parsefile let imagedata = data(/ your image bytes /) let parsefile = parsefile(name "photo jpg", data imagedata) task { do { let savedfile = try await parsefile save() print("file saved ", savedfile url ?? "no url") } catch { print("error uploading file ", error) } } 그런 다음 이 파일을 parseobject에 첨부하고 저장할 수 있습니다 파일의 url을 검색하여 다른 곳에서 표시하거나 다운로드할 수 있습니다 보안 고려사항 파일 접근을 제한하려면 parse server의 파일 구성 https //www back4app com/docs/platform/file storage 예를 들어, 인증된 사용자만 파일을 업로드하도록 허용하거나 swift 코드에서 읽기/쓰기 권한을 지정할 수 있습니다 7단계 – 이메일 확인 및 비밀번호 재설정 왜 확인 및 재설정 이메일이 필요합니까? 사용자의 이메일을 검증하면 실제로 활성화된 메일박스인지 확인할 수 있습니다 비밀번호 재설정은 사용자가 자격 증명을 잊어버린 경우 안전하게 계정 접근을 복구하는 데 도움이 됩니다 back4app에서 구성하기 이동하십시오 이메일 설정 및 이메일 확인 을 활성화하십시오 확인 및 재설정 흐름에 대한 이메일 템플릿을 편집하십시오 swift에서 비밀번호 재설정 트리거하기 task { do { try await user passwordreset(email "alice\@example com") print("password reset email sent!") } catch { print("error requesting password reset ", error) } } 8단계 – 클라우드 작업으로 작업 예약하기 클라우드 작업 back4app에서 서버 측 작업을 예약할 수 있습니다 예를 들어, 오래된 데이터를 정리하거나 주간 보고서를 전송하는 것입니다 클라우드 코드에서 작업을 정의하고 back4app 대시보드를 통해 예약하십시오 parse cloud job("cleanupoldtodos", async (request) => { const now = new date() // example logic remove todos older than 30 days // use master key for privileged operations }) 그런 다음 back4app 서버 설정 > 백그라운드 작업 , 매일 또는 원하는 간격으로 실행되도록 예약할 수 있습니다 9단계 – 웹훅 통합 웹훅이란 무엇인가? 웹훅을 사용하면 특정 이벤트가 발생할 때마다 앱이 외부 서비스에 자동으로 데이터를 post할 수 있습니다 이는 slack, stripe 또는 기타 서드파티 api와 통합하는 데 적합합니다 구성 back4app 대시보드에서 더보기 > 웹훅 로 이동합니다 웹훅 엔드포인트를 추가합니다 (예 https //example com/webhook ) 트리거를 선택합니다 (예 “할 일”에서 객체 생성) 사용자 정의 논리를 위해 cloud code 트리거에서 외부 url에 요청을 발행할 수도 있습니다 10단계 – back4app 관리 패널 탐색 관리 패널이란? “ back4app admin app ”은 비기술적이거나 지원 직원들을 위한 포인트 앤 클릭 인터페이스입니다 데이터에 대한 crud 작업을 수행하기 위한 간단한 gui를 제공하여 개발 환경 외부에서 데이터를 관리하는 데 유용합니다 관리 앱 활성화 앱 대시보드로 이동 > 더보기 > 관리 앱 관리 앱을 활성화하고 하위 도메인을 선택합니다 관리 사용자 생성 활성화되면 적절한 자격 증명을 가진 누구나 사용자 친화적인 웹 인터페이스를 통해 데이터를 보고 편집할 수 있습니다—코드가 필요 없습니다 결론 이 완벽한 튜토리얼을 따라함으로써, 당신은 swift용 백엔드를 구축하는 방법 을 배웠습니다 구체적으로, 당신은 안전한 백엔드를 생성했습니다 당신의 swift 앱을 위해 클래스 스키마와 데이터 관계로 데이터베이스를 구성했습니다 실시간 쿼리로 작업했습니다 (라이브 쿼리) 즉각적인 업데이트를 위해 강력한 보안을 설정했습니다 acl 및 clp로 클라우드 코드를 사용했습니다 서버 측에서 사용자 정의 로직을 실행하기 위해 사용자 인증을 구현했습니다 검증 및 비밀번호 재설정으로 파일 업로드를 처리했습니다 안전하게 자동화된 작업을 예약했습니다 클라우드 작업으로 웹훅에 대해 배웠습니다 외부 api를 통합하기 위해 관리 패널을 탐색했습니다 직접 데이터 관리를 위해 이제 당신은 swift 애플리케이션을 위한 기능적이고 확장 가능한 백엔드 서비스를 갖추게 되었습니다 이 서비스는 더 복잡한 기능을 처리하거나, 제3자 서비스에 연결하거나, 더 많은 사용자 트래픽에 적응할 수 있도록 쉽게 확장할 수 있습니다 또한 back4app의 baas 기능과 swift의 현대적인 구문이 백엔드 개발을 얼마나 빠르게 할 수 있는지를 직접 경험했습니다 다음 단계 생산 준비가 완료된 swift 앱을 ui/ux를 구체화하여 구축하세요 고급 기능 통합 전문 인증(역할 기반, sso) 또는 도메인 특정 규칙을 위한 추가 cloud code 논리와 같은 기능을 통합하세요 공식 back4app 문서 확인 로그, 분석 또는 고급 보안에 대한 심층적인 내용을 위해 확인하세요 다른 튜토리얼 탐색 실시간 채팅, iot 대시보드 또는 위치 기반 앱에 대한 튜토리얼을 탐색하세요 이를 외부 api와 결합하여 실제 문제를 해결하세요 이것이 back4app을 사용하여 swift의 백엔드를 구축하는 방법입니다! 즐거운 코딩 되세요!