Quickstarters
Feature Overview
How to Build a Backend for Deno?
33 분
소개 이 튜토리얼에서는 back4app을 사용하여 deno의 백엔드를 구축하는 방법을 배웁니다 deno 환경에 back4app의 주요 기능인 데이터베이스, rest api, 사용자 인증, 파일 저장소 및 실시간 쿼리를 통합하는 모든 단계를 안내합니다 rest 엔드포인트를 통해 back4app과 통신하는 방법을 배우고, 서버를 직접 관리하지 않고도 완전한 인프라를 구축하는 방법을 알게 될 것입니다 back4app을 사용하면 deno로 서버를 수동으로 구성하는 과정을 건너뛰어 시간과 노력을 절약할 수 있습니다 deno의 표준 라이브러리와 현대적인 접근 방식 덕분에 더 간단한 코드를 작성하는 데 집중할 수 있습니다 이 deno 백엔드 구축 방법 가이드를 마치면, deno 애플리케이션에 고급 보안, 클라우드 코드 및 예약 작업을 통합하는 명확한 경로를 갖게 될 것입니다 이 튜토리얼을 완료하면 서버를 실행하고, rest api를 처리하며, 사용자 인증을 통합하고, 파일을 저장하고, 작업을 쉽게 예약할 수 있습니다 또한 back4app rest api를 사용하여 deno의 fetch 접근 방식으로 데이터를 관리하는 방법을 이해하게 될 것입니다 전제 조건 back4app 계정과 새로운 back4app 프로젝트 back4app 시작하기 https //www back4app com/docs/get started/new parse app 계정이 없으면 무료로 만들 수 있습니다 위의 링크를 사용하여 프로젝트를 준비하세요 deno 설치 deno는 https //deno land https //deno land 에서 받을 수 있습니다 운영 체제에 deno를 설치하고 deno version 으로 확인하세요 기본 deno 개념에 대한 친숙함 모듈, 파일 시스템, deno run allow net , 또는 표준 라이브러리에서 애플리케이션 모듈을 가져오는 방법과 같은 rest api에 대한 기본 지식 데이터 처리를 위해 fetch 호출 및 헤더 콘텐츠 유형을 사용할 것이므로 rest 및 json의 기본 사항을 알고 있어야 합니다 시작하기 전에 이러한 전제 조건이 있는지 확인하세요 back4app 프로젝트가 구성되고 로컬 deno 환경이 실행되고 있으면 이 튜토리얼을 원활하게 따라갈 수 있습니다 1단계 – back4app에서 새 프로젝트 만들기 및 연결하기 새 프로젝트 만들기 당신의 deno 백엔드의 기초는 back4app 프로젝트입니다 아직 만들지 않았다면 back4app 계정에 로그인하세요 “새 앱” 버튼을 클릭하세요 back4app 대시보드에서 앱에 이름을 지정하세요 (예 “deno backend tutorial”) 프로젝트가 준비되면 back4app 대시보드에 나타납니다 이 프로젝트에서 데이터베이스, 보안 및 api를 설정할 것입니다 rest를 통해 back4app에 연결하기 deno용 parse sdk가 없기 때문에 back4app의 rest api 엔드포인트를 사용할 것입니다 애플리케이션 id , rest api 키 , 및 서버 url 은 앱의 앱 설정 또는 보안 및 키 섹션에서 찾을 수 있습니다 이 튜토리얼 전반에 걸쳐, 우리는 fetch 를 사용하여 deno에서 back4app으로 요청을 보낼 것입니다 각 호출에 api 키와 헤더 콘텐츠 유형을 포함하는 것을 잊지 마세요 2단계 – 데이터베이스 설정 이 단계에서는 back4app에서 데이터 모델을 생성하고 deno의 rest api를 사용하여 상호작용할 것입니다 데이터 모델 생성 “데이터베이스” 섹션으로 이동하세요 back4app 대시보드에서 “새 클래스 만들기”를 클릭하세요 그리고 예를 들어 “todo”라고 이름을 지으세요 관련 열 추가하기 (예 title (string), iscompleted (boolean)) 데이터가 저장될 때 parse가 이러한 열을 자동으로 생성하도록 허용할 수도 있습니다 ai 에이전트를 사용한 데이터 모델 생성 back4app의 ai 에이전트가 당신의 스키마를 설계할 수 있습니다 ai 에이전트 열기 당신의 back4app 대시보드에서 데이터 모델 설명하기 (예 “제목, 설명 및 iscompleted 필드가 있는 todo 클래스를 생성하세요 ”) 에이전트가 스키마를 자동으로 생성하도록 허용하세요 이것은 더 복잡한 스키마를 빠르게 관리하는 데 도움이 됩니다 rest api를 사용한 데이터 읽기 및 쓰기 deno에서 rest 엔드포인트를 호출하여 서버를 실행할 수 있습니다 fetch 예를 들어, todo를 생성하려면 // file called createtodo ts export async function createtodoitem(title string, iscompleted boolean) { const url = "https //parseapi back4app com/classes/todo"; const body = json stringify({ title, iscompleted }); const response = await fetch(url, { method "post", headers { "x parse application id" "your application id", "x parse rest api key" "your rest api key", "content type" "application/json", }, body, }); if (!response ok) { throw new error(`error saving todo ${response statustext}`); } const result = await response json(); return result; } 할 일을 가져오려면 // file called fetchtodos ts export async function fetchtodos() { const url = "https //parseapi back4app com/classes/todo"; const response = await fetch(url, { method "get", headers { "x parse application id" "your application id", "x parse rest api key" "your rest api key", }, }); if (!response ok) { throw new error(`error fetching todos ${response statustext}`); } const result = await response json(); return result; } 다음과 같이 실행할 수 있습니다 deno run allow net createtodo ts graphql api를 사용한 데이터 읽기 및 쓰기 back4app은 또한 graphql 엔드포인트를 제공합니다 https //parseapi back4app com/graphql // file called createtodographql ts export async function createtodographql(title string) { const mutation = ` mutation { createtodo(input { fields { title "${title}" iscompleted false } }) { todo { objectid title iscompleted } } } `; const response = await fetch("https //parseapi back4app com/graphql", { method "post", headers { "x parse application id" "your application id", "x parse rest api key" "your rest api key", "content type" "application/json", }, body json stringify({ query mutation }), }); const result = await response json(); return result; } 실시간 쿼리 작업하기 (선택 사항) 실시간 쿼리는 실시간으로 업데이트되지만, deno에는 기본 parse livequery 라이브러리가 없습니다 다른 클라이언트를 위해 back4app 대시보드에서 실시간 쿼리 기능을 설정하거나 deno에서 websocket을 사용하여 수동으로 구독할 수 있습니다 자세한 내용은 공식 실시간 쿼리 문서 https //www back4app com/docs/platform/live queries 를 참조하세요 3단계 – acl 및 clp로 보안 적용하기 개요 back4app의 acl(access control lists) 및 clp(class level permissions)는 데이터를 보호합니다 clp를 사용하여 전체 클래스에 대한 기본 규칙을 설정합니다 그런 다음 acl을 사용하여 객체 수준의 제한을 설정합니다 클래스 수준 권한 설정하기 데이터베이스 섹션을 back4app 대시보드에서 엽니다 클래스 선택 (예 “todo”) 클래스 수준 권한 탭으로 이동합니다 읽기/쓰기 접근을 필요에 따라 공개 또는 인증된 사용자에 대해 활성화하거나 비활성화합니다 acl 구성하기 rest를 통해 객체를 생성하거나 업데이트할 때 요청 본문에 acl 속성을 포함할 수 있습니다 예를 들어 const body = json stringify({ title "private task", acl { " " { "read" false, "write" false }, "role\ admins" { "read" true, "write" true }, } }); 이 예제는 “관리자” 역할만 읽거나 쓸 수 있도록 허용합니다 공개 접근은 꺼져 있습니다 4단계 – 클라우드 코드 함수 작성 클라우드 코드의 이유 클라우드 코드는 안전한 서버 측 로직을 저장하는 곳입니다 서버를 직접 관리하지 않습니다 특정 클래스에 대한 유효성 검사 또는 트리거를 추가할 수 있습니다 예제 클라우드 코드 함수 클라우드 함수를 정의하고(자바스크립트로) 앱에 배포할 수 있습니다 예를 들어, 텍스트 길이를 확인하는 함수는 다음과 같을 수 있습니다 parse cloud define("calculatetextlength", async (request) => { const { text } = request params; if (!text) { throw "text parameter is required"; } return { length text length }; }); 배포 코드를 배포할 수 있습니다 back4app cli https //www back4app com/docs/local development/parse cli 또는 back4app 대시보드의 클라우드 코드 패널을 통해 클라우드 코드에서 npm 사용 외부 라이브러리를 require() 배포가 완료되면 서버 환경에서 실행됩니다 이는 고급 작업에 유용하지만, deno에서 실행하는 것은 back4app의 클라우드 코드 환경과는 별개임을 기억하세요 5단계 – 인증 구성 인증 활성화 back4app는 인증을 위해 parse user 클래스를 사용합니다 deno로 작업하는 동안 rest 엔드포인트를 호출하여 사용자를 관리할 수 있습니다 rest를 사용하여 가입 및 로그인 async function signupuser(username string, password string, email string) { const url = "https //parseapi back4app com/users"; const body = json stringify({ username, password, email }); const response = await fetch(url, { method "post", headers { "x parse application id" "your application id", "x parse rest api key" "your rest api key", "content type" "application/json", }, body, }); return await response json(); } async function loginuser(username string, password string) { const url = `https //parseapi back4app com/login?username=${username}\&password=${password}`; const response = await fetch(url, { method "get", headers { "x parse application id" "your application id", "x parse rest api key" "your rest api key", }, }); return await response json(); } 소셜 로그인 back4app에서 google, facebook, apple 및 기타 제공자를 설정할 수 있습니다 그런 다음 oauth 토큰으로 전용 엔드포인트를 호출합니다 자세한 내용은 back4app의 소셜 로그인 문서 https //www back4app com/docs/platform/sign in with apple 를 참조하세요 6단계 – 파일 저장 처리 파일 업로드 및 검색 deno에서 파일을 업로드하려면 https //parseapi back4app com/files/\<filename> 예를 들어 async function uploadfile(filedata uint8array, filename string) { const url = `https //parseapi back4app com/files/${filename}`; const response = await fetch(url, { method "post", headers { "x parse application id" "your application id", "x parse rest api key" "your rest api key", "content type" "image/png", }, body filedata, }); return await response json(); } 그런 다음 결과 파일 url을 클래스 객체에 저장할 수 있습니다 이 방법은 deno에서 서버를 실행하는 동안 이미지나 문서를 저장하는 데 적합합니다 7단계 – 이메일 확인 및 비밀번호 재설정 개요 이메일 확인은 합법적인 접근을 보장합니다 비밀번호 재설정은 사용자가 안전하게 접근할 수 있도록 도와줍니다 대시보드 구성 이메일 확인 활성화 를 back4app 대시보드의 이메일 설정에서 설정합니다 확인 템플릿 사용자 정의 를 설정합니다 비밀번호 재설정 활성화 하고 선호하는 이메일 레이아웃을 설정합니다 사용자가 가입하면 이메일 인증을 켠 경우 인증 링크를 받습니다 비밀번호 재설정을 위해 rest 엔드포인트를 호출하십시오 post /requestpasswordreset 8단계 – 클라우드 작업으로 작업 예약하기 클라우드 작업 개요 클라우드 작업은 인간의 개입 없이 주기적으로 실행됩니다 예를 들어, 매일 오래된 기록을 삭제하거나 정기적인 이메일 알림을 보낼 수 있습니다 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\ valueof() thirty days); query lessthan("createdat", cutoff); const oldtodos = await query find({ usemasterkey true }); await parse object destroyall(oldtodos, { usemasterkey true }); return `deleted ${oldtodos length} old todos `; }); 이 작업을 배포한 후, back4app 대시보드의 앱 설정 > 서버 설정 > 백그라운드 작업 에서 예약할 수 있습니다 9단계 – 웹훅 통합하기 정의 웹훅은 객체 생성 또는 업데이트와 같은 이벤트가 발생할 때 트리거되는 http 콜백입니다 slack, stripe 또는 기타 외부 서비스와 통합할 수 있습니다 구성 “더보기” > “웹훅” 를 back4app 대시보드에서 엽니다 “웹훅 추가”를 클릭합니다 그리고 타사 서비스의 엔드포인트를 제공합니다 요청을 보내고 싶은 트리거 또는 클래스를 설정합니다 이것은 외부 시스템이 back4app에서 객체를 생성하거나 수정할 때마다 데이터를 받을 수 있도록 합니다 10단계 – back4app 관리 패널 탐색하기 관리자 패널 소개 비기술 팀은 이 패널을 사용하여 데이터를 시각적으로 관리할 수 있습니다 crud 작업 및 데이터 검토를 간소화합니다 활성화하는 방법 앱 대시보드 > 더보기 > 관리자 앱으로 이동 그리고 “관리자 앱 활성화”를 선택합니다 관리자 사용자 생성 로그인합니다 서브도메인 설정 관리자 앱을 위해 그런 다음 관리자 앱에 로그인하여 안전하게 기록을 관리할 수 있습니다 결론 이 튜토리얼에서는 back4app에서 deno의 백엔드를 구축하는 방법을 배웠습니다 데이터 모델을 만들고, 사용자 인증을 처리하고, 보안을 위한 acl 및 clp에 대해 배우고, 클라우드 작업을 예약했습니다 또한 웹훅을 통해 외부 api를 통합하는 방법과 deno run allow net 명령으로 서버 또는 rest api를 실행하는 방법을 보았습니다 이 설정은 수동으로 파일 시스템이나 서버 아키텍처의 표준 라이브러리 복잡성을 구성하지 않고도 빠르게 시작할 수 있게 해줍니다 다음 단계 deno 애플리케이션 확장 추가 엔드포인트 및 고급 논리를 사용하여 cloud code로 더 많은 서비스 통합 (예 결제 게이트웨이, 분석) back4app 데이터와 함께 back4app의 공식 문서 참조 보안, 성능 및 로그 분석 팁에 대해 더 깊이 실험 고급 실시간 기능 또는 deno kv 저장소를 사용하여 deno 런타임과 back4app의 강력한 환경 간의 데이터를 연결합니다 새로운 지식을 바탕으로, back4app이 지원하는 안전하고 확장 가능하며 기능이 풍부한 deno 백엔드를 자신 있게 배포할 수 있습니다