Quickstarters
Feature Overview
How to Build a Backend for Symfony?
28 분
소개 이 튜토리얼에서는 symfony의 백엔드를 구축하는 방법 을 배우게 됩니다 back4app의 강력한 기능—데이터베이스 관리, 클라우드 코드, rest 및 graphql api—를 사용하여 symfony 애플리케이션과 원활하게 작동하는 안전하고 확장 가능하며 효율적인 백엔드를 만드는 방법을 보여드리겠습니다 사용자 인증, 파일 저장 및 실시간 업데이트를 live queries를 통해 처리하는 방법도 알아보게 됩니다(아키텍처에 따라 다를 수 있습니다) back4app의 빠른 설정과 직관적인 플랫폼을 활용하면 서버와 데이터베이스를 수동으로 처리하는 것에 비해 시간과 노력을 절약할 수 있습니다 신뢰할 수 있는 백엔드 개발을 위한 고급 보안, 클라우드 작업으로 작업 예약, 웹훅 구성 및 기타 필수 기능에 대한 실습 경험을 얻을 수 있습니다 이 튜토리얼을 완료한 후, 프로덕션을 위한 symfony 백엔드를 자신 있게 확장하거나 사용자 정의하고, 외부 api를 통합하며, 필요에 따라 복잡한 비즈니스 로직을 추가할 수 있습니다 전제 조건 back4app 계정 무료로 가입하기 여기 https //www back4app com 새로운 back4app 프로젝트 back4app 시작하기 https //www back4app com/docs/get started/new parse app symfony 전용 설정 로컬에 symfony https //symfony com/download 가 설치되어 있는지 확인하세요 php와 composer가 준비되어 있는지 확인하세요 symfony에 대한 기본 지식 컨트롤러, 서비스 및 템플릿에 대한 친숙함이 유익합니다 symfony 공식 문서 https //symfony com/doc/current/index html node js (선택 사항, 특정 빌드 도구용) 프론트엔드 작업을 위해 node 기반 도구를 사용할 계획이라면 node js https //nodejs org/en/download/ 를 설치하세요 시작하기 전에 symfony 환경과 back4app 프로젝트가 설정되어 있는지 확인하세요 이렇게 하면 단계를 원활하게 따라갈 수 있습니다 1단계 – back4app에서 새 프로젝트 만들기 및 연결하기 back4app 프로젝트 생성 back4app 계정에 로그인합니다 대시보드에서 “새 앱”을 클릭합니다 이름을 지정합니다 (예 “symfony backend tutorial”) 생성된 후, back4app 대시보드에 나타납니다 이 프로젝트는 귀하의 백엔드 기초입니다 rest 또는 graphql로 연결 앱의 “앱 설정” 또는 “보안 및 키”에서 애플리케이션 id 및 rest api 키 (graphql을 사용할 계획이라면 graphql 엔드포인트도) 찾습니다 당신의 parse 서버 url (예 https //parseapi back4app com )를 기록해 두세요 symfony는 기본 parse sdk가 없으므로, symfony의 http 클라이언트 또는 guzzle과 같은 라이브러리를 사용하여 back4app의 rest 또는 graphql api와 통신해야 합니다 아래는 symfony httpclient https //symfony com/doc/current/http client html 예시입니다 // src/service/back4appclient php namespace app\service; use symfony\component\httpclient\httpclient; class back4appclient { private $appid; private $restkey; private $baseurl; public function construct(string $appid, string $restkey, string $baseurl) { $this >appid = $appid; $this >restkey = $restkey; $this >baseurl = $baseurl; } public function createobject(string $classname, array $data) { $client = httpclient create(); $response = $client >request('post', $this >baseurl '/classes/' $classname, \[ 'headers' => \[ 'x parse application id' => $this >appid, 'x parse rest api key' => $this >restkey, 'content type' => 'application/json' ], 'json' => $data, ]); return $response >toarray(); } } 이 서비스는 symfony 내에서 back4app 백엔드에 요청을 하는 데 도움을 줄 것입니다 2단계 – 데이터베이스 설정 데이터 모델 생성 back4app에서 데이터를 저장할 클래스(테이블)를 정의합니다 예를 들어, todo 클래스를 만들어 작업을 보관하고 싶다고 가정해 보겠습니다 데이터베이스로 이동 당신의 back4app 대시보드에서 새로운 클래스 생성 “todo”를 만들고 title (문자열) 및 iscompleted (부울)과 같은 필드를 추가하세요 대안으로, back4app ai 에이전트 가 데이터 모델을 생성하게 하세요 ai 에이전트 열기 당신의 프로젝트 대시보드에서 데이터 모델 설명하기 (예 “제목과 iscompleted 필드가 있는 todo 클래스를 생성하세요 ”) 스키마 자동 생성하기 rest를 사용한 데이터 읽기 및 쓰기 새로운 todo 를 symfony 컨트롤러에서 생성하려면 다음과 같이 할 수 있습니다 use app\service\back4appclient; use symfony\bundle\frameworkbundle\controller\abstractcontroller; use symfony\component\routing\annotation\route; class todocontroller extends abstractcontroller { \#\[route('/todo/new', name 'new todo')] public function new(back4appclient $client) { $data = \[ 'title' => 'buy groceries', 'iscompleted' => false ]; $result = $client >createobject('todo', $data); return $this >json($result); } } 쿼리 , 자격 증명과 함께 get 요청을 사용하세요 curl x get \\ h "x parse application id your application id" \\ h "x parse rest api key your rest api key" \\ https //parseapi back4app com/classes/todo graphql을 사용한 데이터 읽기 및 쓰기 또한 graphql 을 symfony에 통합할 수 있습니다 todo 를 생성하기 위한 예제 뮤테이션은 다음과 같습니다 mutation { createtodo(input { fields { title "clean the kitchen" iscompleted false } }) { todo { objectid title iscompleted } } } 실시간 쿼리 작업하기 (선택 사항) symfony 앱이 실시간 데이터가 필요하다면, live queries 를 더 프론트엔드 또는 실시간 마이크로서비스 맥락에서 통합할 수 있습니다 back4app의 서버 설정 에서 live queries를 구성한 다음, websocket 클라이언트를 연결합니다 필요하다면 symfony는 이러한 업데이트에 응답하거나 별도의 실시간 레이어를 통해 방송할 수 있습니다 3단계 – acl 및 clp로 보안 적용하기 acls (접근 제어 목록) acl을 사용하면 객체를 읽거나 쓸 수 있는 사람을 제어할 수 있습니다 예를 들어, rest api를 사용하여 데이터를 생성할 때 json에 acl 필드를 추가하여 코드에서 acl을 적용할 수 있습니다 예를 들어 { "title" "private task", "iscompleted" false, " acl" { "userobjectidhere" { "read" true, "write" true } } } clps (클래스 수준 권한) 클래스 수준 권한 을 사용하면 전체 클래스에 대한 광범위한 접근 규칙을 설정할 수 있습니다 back4app 대시보드에서 데이터베이스 열기 클래스를 선택하세요 (예 “todo”) 권한 탭으로 이동하여 읽기/쓰기 접근을 구성하세요 자세한 정보는 앱 보안 가이드라인 https //www back4app com/docs/security/parse security 을 방문하세요 4단계 – 클라우드 코드 함수 작성 클라우드 코드를 사용하면 인프라를 관리하지 않고도 안전한 서버 측 javascript를 실행할 수 있습니다 symfony가 php로 되어 있지만, 특정 작업을 클라우드 코드 에 위임하여 고급 로직, 트리거 및 유효성 검사를 수행할 수 있습니다 예 저장하기 전에 todo 유효성 검사 // main js parse cloud beforesave('todo', (request) => { const todo = request object; if (!todo get('title')) { throw new error('todo must have a title'); } }); 배포 back4app cli를 사용하세요 또는 대시보드를 사용하여 main js 를 배포하세요 클라우드 함수를 호출하세요 symfony 서비스에서 rest 또는 graphql을 통해 5단계 – 인증 구성 back4app의 사용자 관리는 parse user 클래스를 기반으로 합니다 symfony를 사용하면 rest 또는 graphql 호출을 통해 사용자 가입, 로그인 및 비밀번호 재설정을 처리할 수 있습니다 회원 가입 / 로그인 via rest \# sign up curl x post \\ h "x parse application id your app id" \\ h "x parse rest api key your rest api key" \\ h "content type application/json" \\ d '{"username" "alex", "password" "symfony123", "email" "alex\@example com"}' \\ https //parseapi back4app com/users \# log in curl x get \\ h "x parse application id your app id" \\ h "x parse rest api key your rest api key" \\ \ data urlencode 'username=alex' \\ \ data urlencode 'password=symfony123' \\ https //parseapi back4app com/login 프로그래밍 방식의 사용자 흐름이 필요하면 symfony 서비스를 사용하여 이러한 호출을 래핑하세요 소셜 로그인 google 또는 apple 로그인 통합을 계획하고 있다면 back4app의 소셜 로그인 문서 https //www back4app com/docs/platform/sign in with apple oauth 앱을 구성하고 인증을 완료하기 위해 특정 rest 호출을 수행해야 합니다 6단계 – 파일 저장 처리 rest를 통한 파일 업로드 curl x post \\ h "x parse application id your app id" \\ h "x parse rest api key your rest api key" \\ h "content type image/png" \\ \ data binary '@localimage png' \\ https //parseapi back4app com/files/localimage png 업로드 후, 파일 url을 받게 됩니다 해당 링크를 어떤 클래스(예 todo )에 저장하여 그 파일에 대한 참조로 사용할 수 있습니다 7단계 – 이메일 확인 및 비밀번호 재설정 이메일 구성 이메일 설정으로 이동 in back4app 이메일 확인 및 비밀번호 재설정 템플릿을 활성화합니다 필요에 따라 “보낸 사람” 및 “제목” 줄을 사용자 정의합니다 이것은 모든 가입이 유효한 이메일 확인을 요구하도록 보장합니다 8단계 – 클라우드 작업으로 작업 예약하기 클라우드 작업 예시 // main js parse cloud job('cleanupoldtodos', async () => { const todo = parse object extend('todo'); const query = new parse query(todo); const now = new date(); const thirty days = 30 24 60 60 1000; query lessthan('createdat', new date(now thirty days)); const oldtodos = await query find({ usemasterkey true }); await parse object destroyall(oldtodos, { usemasterkey true }); return `deleted ${oldtodos length} old todos `; }); 이 cleanupoldtodos 작업을 back4app 대시보드에서 매일 실행되도록 예약하여 데이터 관리를 개선합니다 9단계 – 웹훅 통합하기 웹훅 은 back4app이 외부 서비스에 http 요청을 보낼 수 있게 해줍니다 예를 들어, 새로운 todo 가 생성될 때마다 slack 엔드포인트를 호출할 수 있습니다 더보기 > 웹훅으로 이동 back4app 대시보드에서 외부 엔드포인트를 지정하여 웹훅 추가 객체 생성 시 todo 클래스에서 이벤트를 트리거합니다 10단계 – back4app 관리 패널 탐색하기 다음과 같이 사용자 친화적인 데이터 관리 인터페이스를 위해 back4app admin app 을 사용하세요 admin app 활성화 는 app dashboard > more > admin app 에서 하세요 안전한 사용자 이름과 비밀번호로 관리 사용자 계정을 생성하세요 쉬운 접근을 위해 사용자 정의 하위 도메인을 할당하세요 이 기능은 비기술 팀원이 코드를 깊이 파고들지 않고도 기록을 보고 관리할 수 있도록 도와줍니다 결론 당신은 back4app을 사용하여 symfony의 백엔드를 구축하는 방법을 배웠습니다 여기에는 다음이 포함됩니다 새 프로젝트 생성 back4app을 기반으로 데이터베이스 구성 클래스, 필드 및 관계를 사용하여 데이터 보안 acl 및 clp를 사용하여 클라우드 코드 활용 서버 측 로직을 위해 사용자 인증 관리 (가입, 로그인, 비밀번호 재설정) 파일 저장 처리 rest api를 사용하여 클라우드 작업 설정 주기적인 작업을 위해 웹훅 통합 외부 서비스와 연결하기 위해 back4app 관리 패널 탐색 쉬운 데이터 관리를 위해 이 단계는 symfony 애플리케이션을 구축하고 확장하기 위한 강력한 프레임워크를 제공합니다 이 아키텍처를 확장하여 더 복잡한 로직을 처리하고, 결제 게이트웨이를 통합하거나, 고급 보안 기능을 추가하세요 back4app을 사용하면 호스팅 및 인프라에 대한 시간과 노력을 절약할 수 있으므로 최상의 사용자 경험을 제공하는 데 집중할 수 있습니다 다음 단계 생산 준비가 완료된 symfony 앱 구축 더 높은 트래픽과 고급 성능 요구를 위해 back4app 백엔드를 사용자 정의하여 고급 기능 통합 역할 기반 접근, 분석 또는 결제를 위한 제3자 api와 같은 공식 back4app 문서 탐색 보안, 로그 및 모니터링에 대한 더 깊은 통찰을 위해 더 많은 튜토리얼 확인 이 백엔드를 실시간 서비스와 결합하거나 실시간 업데이트가 있는 동적 웹사이트를 만들기 위해 이 전략을 따르면 symfony 프로젝트는 강력하고 효율적인 백엔드를 갖게 됩니다 back4app을 활용하여 유지 관리를 용이하게 하고 애플리케이션의 기능을 빠르게 발전시키세요 다음 symfony 걸작을 만드는 데 행운을 빕니다!