Quickstarters
Feature Overview
Como Construir um Backend para MacOS?
46 min
introdução neste tutorial, você aprenderá como construir um backend para macos usando back4app e o parse swift sdk vamos percorrer a integração de recursos essenciais do back4app—como gerenciamento de banco de dados, funções de cloud code, apis rest e graphql, autenticação de usuários e consultas em tempo real (live queries)—para criar um backend seguro, escalável e robusto que se comunica perfeitamente com seu aplicativo macos você também verá como a configuração rápida do back4app e o ambiente intuitivo podem reduzir drasticamente o tempo e o esforço em comparação com a configuração manual de servidores e bancos de dados ao longo do caminho, você ganhará experiência prática com funcionalidades chave, incluindo recursos avançados de segurança, agendamento de tarefas com cloud jobs e configuração de webhooks para integrações externas ao final deste tutorial, você estará bem preparado para aprimorar esta configuração fundamental em um aplicativo macos pronto para produção ou incorporar facilmente lógica personalizada e apis de terceiros conforme necessário dominar essa abordagem permitirá que você otimize seus fluxos de trabalho e aprenda como construir um backend para macos de forma rápida e eficiente pré requisitos para completar este tutorial, você precisará uma conta back4app e um novo projeto back4app começando com back4app https //www back4app com/docs/get started/new parse app se você não tiver uma conta, pode criar uma gratuitamente siga o guia acima para preparar seu projeto um ambiente de desenvolvimento macos (xcode) você pode instalar o xcode na mac app store https //apps apple com/us/app/xcode/id497799835 swift package manager ou cocoapods para instalar o sdk parse swift documentação do parse swift https //github com/netreconlab/parse swift conhecimento básico de swift e desenvolvimento de aplicativos macos documentação oficial da apple https //developer apple com/documentation/swift familiaridade com swiftui ou appkit é útil certifique se de ter todos esses pré requisitos em ordem antes de começar ter seu projeto back4app configurado e seu ambiente de desenvolvimento local macos pronto ajudará você a acompanhar mais facilmente passo 1 – configurando o projeto back4app criar um novo projeto o primeiro passo para construir seu backend macos no back4app é criar um novo projeto se você ainda não criou um, siga estas etapas faça login na sua conta back4app clique no botão “novo app” no seu painel do back4app dê um nome ao seu app (por exemplo, “macos backend tutorial”) uma vez que o projeto é criado, você verá ele listado no seu painel do back4app este projeto será a base para todas as configurações de backend discutidas neste tutorial conectar o sdk parse swift o back4app depende da plataforma parse para gerenciar seus dados, fornecer recursos em tempo real, lidar com autenticação de usuários e mais conectar seu aplicativo macos ao back4app envolve instalar o sdk parse swift e inicializá lo com as credenciais do seu painel do back4app recupere suas chaves parse no seu painel do back4app, navegue até a seção “configurações do app” ou “segurança & chaves” do seu app para encontrar seu id do aplicativo e chave do cliente (ou clientkey ) você também encontrará a url do servidor parse (geralmente no formato https //parseapi back4app com ) instale o sdk parse swift no seu projeto macos se estiver usando swift package manager dependencies \[ package(url "https //github com/netreconlab/parse swift git", from "5 0 0") ] se estiver usando cocoapods , adicione isso ao seu podfile pod 'parseswiftog' inicialize o parse em seu aplicativo macos (por exemplo, em appdelegate swift se estiver usando appkit, ou em uma struct swiftui @main se estiver construindo um aplicativo swiftui) import parseswift import swiftui @main struct mymacosapp app { init() { task { do { try await parseswift initialize( applicationid "your application id", clientkey "your client key", serverurl url(string "https //parseapi back4app com")! ) } catch { print("error initializing parse \\(error)") } } } var body some scene { windowgroup { contentview() } } } ao completar esta etapa, você estabeleceu uma conexão segura entre a interface (ui) do seu macos e o backend do back4app todas as solicitações e transações de dados são roteadas de forma segura através deste sdk, reduzindo a complexidade de chamadas rest ou graphql manuais (embora você ainda possa usá las se necessário) passo 2 – configurando o banco de dados salvando e consultando dados com seu projeto back4app configurado e o sdk parse swift integrado ao seu aplicativo macos, você pode agora começar a salvar e recuperar dados a maneira mais simples de criar um objeto é definir uma struct que conforma com parseobject e então chamar save() struct todo parseobject { // parseobject required properties var objectid string? var createdat date? var updatedat date? var acl parseacl? var originaldata data? // custom properties var title string? var iscompleted bool? } func createtodoitem(title string, iscompleted bool) async { var todo = todo() todo title = title todo iscompleted = iscompleted do { try await todo save() print("todo saved successfully ") } catch { print("error saving todo \\(error)") } } func fetchtodos() async > \[todo] { let query = todo query() do { return try await query find() } catch { print("error fetching todos \\(error)") return \[] } } alternativamente, você pode usar a api rest ou graphql do back4app 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 o back4app também fornece uma interface graphql mutation { createtodo(input { fields { title "clean the house" iscompleted false } }) { todo { objectid title iscompleted } } } essas opções diversas permitem que você integre operações de dados da maneira que melhor se adapta ao seu processo de desenvolvimento—seja através do sdk parse swift, rest ou graphql design de esquema e tipos de dados por padrão, o parse permite criação de esquema em tempo real , mas você também pode definir suas classes e tipos de dados no painel do back4app para mais controle navegue até a seção “banco de dados” no seu painel do back4app crie uma nova classe (por exemplo, “todo”) e adicione colunas relevantes, como título (string) e iscompleted (boolean) o back4app suporta vários tipos de dados string , número , booleano , objeto , data , arquivo , ponteiro , array , relação , geopoint , e polígono você pode escolher o tipo apropriado para cada campo ou deixar o parse criar automaticamente essas colunas quando você salvar um objeto pela primeira vez no seu aplicativo macos o back4app oferece um agente de ia que pode ajudá lo a projetar seu modelo de dados abra o agente de ia a partir do seu painel de aplicativos ou no menu descreva seu modelo de dados em linguagem simples (por exemplo, “por favor, crie um novo aplicativo todo no back4app com um esquema de classe completo ”) deixe o agente de ia criar o esquema para você dados relacionais se você tiver dados relacionais—digamos, um category objeto que aponta para vários todo itens—você pode usar pointers ou relations no parse swift struct category parseobject { var objectid string? var createdat date? var updatedat date? var acl parseacl? var originaldata data? // custom fields var name string? } struct todo parseobject { var objectid string? var createdat date? var updatedat date? var acl parseacl? var originaldata data? var title string? var category pointer\<category>? } func createtaskforcategory(categoryobjectid string, title string) async { let pointer = pointer\<category>(objectid categoryobjectid) var todo = todo() todo title = title todo category = pointer do { try await todo save() print("todo linked to category") } catch { print("error creating task with category relationship \\(error)") } } func fetchtodoswithcategory() async { let query = todo query() include("category") do { let todos = try await query find() print("fetched todo items with category \\(todos)") } catch { print("error fetching todos \\(error)") } } consultas ao vivo para atualizações em tempo real, o back4app fornece live queries ao habilitar consultas ao vivo no seu painel do back4app, você pode se inscrever para mudanças em uma classe específica a partir do seu aplicativo macos habilite consultas ao vivo no seu painel do back4app sob as configurações do servidor do seu aplicativo inicialize consultas ao vivo no código (o cliente de consulta ao vivo em swift ainda está em desenvolvimento, mas você pode usar abordagens impulsionadas pela comunidade ou aguardar atualizações oficiais do parse swift) src/parseconfig swift // example (subject to support in parse swift) // live query’s subdomain // parseswift configuration livequeryserverurl = url(string "wss\ //your subdomain here b4a io")! uma vez inscrito, você receberá notificações sempre que um novo todo for criado, atualizado ou excluído isso é especialmente valioso para aplicativos de desktop colaborativos ou altamente interativos, onde vários usuários ou processos precisam ver os dados mais recentes instantaneamente passo 3 – aplicando segurança com acls e clps mecanismo de segurança do back4app back4app leva a segurança a sério, fornecendo listas de controle de acesso (acls) e permissões de nível de classe (clps) esses recursos permitem restringir quem pode ler ou escrever dados em uma base por objeto ou por classe, garantindo que apenas usuários autorizados possam modificar seus dados listas de controle de acesso (acls) uma acl é aplicada a objetos individuais para determinar quais usuários, funções ou o público podem realizar operações de leitura/gravação por exemplo, se seu aplicativo macos tem um conceito de “tarefas privadas” para o usuário atualmente logado import parseswift func createprivatetodo(title string) async { guard let currentuser = user current else { return } var todo = todo() todo title = title // create an acl granting read/write access only to the owner var acl = parseacl() acl setreadaccess(currentuser, value true) acl setwriteaccess(currentuser, value true) todo acl = acl do { try await todo save() print("private todo saved") } catch { print("error saving private todo \\(error)") } } quando você salva o objeto, ele tem uma acl que impede qualquer pessoa, exceto o usuário especificado, de lê lo ou modificá lo permissões de nível de classe (clps) clps governam as permissões padrão de toda a classe, como se a classe é publicamente legível ou gravável, ou se apenas certas funções podem acessá la vá para o seu painel do back4app , selecione seu aplicativo e abra a banco de dados seção selecione uma classe (por exemplo, “todo”) abra as permissões de nível de classe aba configure seus padrões, como “requer autenticação” para leitura ou escrita, ou “sem acesso” para o público passo 4 – escrevendo e implantando funções em nuvem o cloud code é um recurso do ambiente parse server que permite executar código javascript personalizado no lado do servidor—sem precisar gerenciar seus próprios servidores ou infraestrutura ao escrever cloud code, você pode estender seu backend do back4app com lógica de negócios adicional, validações, gatilhos e integrações que são executadas de forma segura e eficiente no parse server como funciona quando você escreve cloud code, normalmente coloca suas funções javascript, gatilhos e quaisquer módulos npm necessários em um main js arquivo você então implanta este arquivo em seu projeto back4app, e ele é executado no ambiente parse server isso permite que você mantenha a lógica sensível no lado do servidor casos de uso típicos lógica de negócios cálculos ou transformações antes de salvar dados validações de dados garantir que certos campos atendam aos critérios gatilhos realizar ações quando os dados mudam integrações conectar com apis externas (por exemplo, pagamentos, notificações) função de exemplo // main js parse cloud define('calculatetextlength', async (request) => { const { text } = request params; if (!text) { throw new error('no text provided'); } return { length text length }; }); implantando via o cli do back4app instale o cli curl https //raw\ githubusercontent com/back4app/parse cli/back4app/installer sh | sudo /bin/bash configure sua chave de conta b4a configure accountkey implante seu código em nuvem b4a deploy chamando sua função do macos usando swift import parseswift func gettextlength(text string) async { do { let result = try await parsecloud callfunction("calculatetextlength", with \["text" text]) if let resultdict = result as? \[string any], let length = resultdict\["length"] as? int { print("text length \\(length)") } } catch { print("error calling cloud function \\(error)") } } você também pode chamá lo via rest ou graphql, da mesma forma que em outros frameworks passo 5 – configurando a autenticação do usuário autenticação de usuário no back4app o back4app utiliza a parseuser classe como base para autenticação por padrão, o parse lida com a hash de senhas, tokens de sessão e armazenamento seguro, para que você não precise configurar fluxos de segurança complexos manualmente configurando a autenticação do usuário em um aplicativo macos, você pode criar um novo usuário com struct user parseuser { var objectid string? var createdat date? var updatedat date? var acl parseacl? var originaldata data? // default properties var username string? var email string? var emailverified bool? var password string? var authdata \[string \[string string]?]? } func signupuser(username string, password string, email string) async { var newuser = user() newuser username = username newuser password = password newuser email = email do { newuser = try await newuser signup() print("user signed up successfully!") } catch { print("error signing up user \\(error)") } } func loginuser(username string, password string) async { do { let user = try await user login(username username, password password) print("user logged in \\(user)") } catch { print("error logging in user \\(error)") } } via rest, um login pode parecer 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 gerenciamento de sessão após um login bem sucedido, o parse cria um token de sessão você pode acessar o usuário atualmente logado if let currentuser = user current { print("currently logged in user \\(currentuser username ?? "no username")") } else { print("no user is logged in") } desconectando do { try await user logout() } catch { print("error logging out \\(error)") } integração de login social você pode integrar provedores populares como google, apple ou facebook configurando authdata as instruções detalhadas variam, então consulte documentação de login social https //www back4app com/docs/platform/sign in with apple verificação de email e redefinição de senha para habilitar a verificação de e mail e a redefinição de senha navegue até as configurações de e mail no seu painel do back4app habilite a verificação de e mail configure o endereço de remetente , modelos de e mail e seu domínio personalizado, se desejado isso melhora a segurança da conta validando os e mails dos usuários e fornecendo um método de recuperação de senha passo 6 – gerenciando armazenamento de arquivos carregando e recuperando arquivos o parse inclui a parsefile classe para gerenciar o upload de arquivos, que o back4app armazena de forma segura func uploadfile(data data) async > parsefile? { let file = parsefile(name "doc txt", data data) do { let savedfile = try await file save() print("file saved ", savedfile url ?? "no url") return savedfile } catch { print("error uploading file ", error) return nil } } anexe o a um objeto struct photo parseobject { var objectid string? var createdat date? var updatedat date? var acl parseacl? var originaldata data? var imagefile parsefile? } func createphotoobject(file parsefile) async { var photo = photo() photo imagefile = file do { try await photo save() print("photo object saved!") } catch { print("error saving photo ", error) } } segurança de arquivos você pode configurar a segurança de upload de arquivos nas configurações do seu parse server por exemplo, controlando quais usuários podem fazer upload ou excluir arquivos lembre se de que, se você compartilhar a url do arquivo, qualquer pessoa com essa url pode acessá lo, a menos que você tenha definido regras mais rigorosas do lado do servidor passo 7 – verificação de email e redefinição de senha visão geral a verificação de email e a redefinição de senhas são críticas para a gestão segura de usuários já abordamos isso no passo 5 , mas como um lembrete ative esses recursos no painel do back4app (configurações de email) configure os modelos de email “ativar verificação de email” e “redefinição de senha” teste o fluxo a partir do seu aplicativo macos passo 8 – agendando tarefas com cloud jobs cloud jobs cloud jobs permitem que você agende e execute tarefas rotineiras no seu backend, como enviar emails periódicos ou limpar dados por exemplo // 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); const oldtodos = await query find({ usemasterkey true }); await parse object destroyall(oldtodos, { usemasterkey true }); return `deleted ${oldtodos length} old todos `; }); implante seu cloud code com o novo trabalho vá para o painel do back4app > configurações do app > configurações do servidor > trabalhos em segundo plano agende o trabalho (por exemplo, diariamente) passo 9 – integrando webhooks webhooks permitem que seu aplicativo back4app envie requisições http para um serviço externo sempre que certos eventos ocorrerem isso é poderoso para integrar com sistemas de terceiros como gateways de pagamento, ferramentas de marketing por e mail ou plataformas de análise navegue até a configuração de webhooks no seu painel do back4app > mais > webhooks configure um endpoint (por exemplo, https //your external service com/webhook endpoint ) configure gatilhos para especificar quais eventos nas suas classes do back4app ou funções de cloud code dispararão o webhook por exemplo, se você quiser notificar o slack sempre que um novo todo for criado crie um app do slack que aceite webhooks de entrada copie a url do webhook do slack no seu painel do back4app, defina o endpoint para essa url do slack para o evento “novo registro na classe todo ” passo 10 – explorando o painel de administração do back4app o back4app admin app é uma interface de gerenciamento baseada na web projetada para usuários não técnicos realizarem operações crud e lidarem com tarefas rotineiras de dados sem escrever nenhum código ele fornece uma centrada em modelos , amigável ao usuário interface que simplifica a administração de banco de dados, gerenciamento de dados personalizados e operações em nível empresarial habilitando o admin app habilite indo para app dashboard > mais > admin app e clicando em “habilitar admin app ” crie um primeiro usuário admin , que gera automaticamente um novo papel ( b4aadminuser ) e classes relevantes no esquema do seu aplicativo escolha um subdomínio para acessar a interface de administração e complete a configuração faça login usando as credenciais de admin que você criou para acessar o novo painel do admin app uma vez ativado, o back4app admin app facilita a visualização, edição ou remoção de registros do seu banco de dados—sem exigir o uso direto do parse dashboard ou código de backend conclusão ao seguir este tutorial abrangente, você criou um backend seguro para um aplicativo macos no back4app configurou um banco de dados com esquemas de classe, tipos de dados e relacionamentos integrou consultas em tempo real (live queries) para atualizações imediatas de dados aplicou medidas de segurança usando acls e clps para proteger e gerenciar o acesso aos dados implementou funções de cloud code para executar lógica de negócios personalizada no lado do servidor configurou autenticação de usuário com suporte para verificação de e mail e redefinições de senha gerenciou uploads de arquivos e recuperação, com controles de segurança de arquivos opcionais agendou cloud jobs para tarefas automatizadas em segundo plano usou webhooks para integrar com serviços externos explorou o painel de administração do back4app para gerenciamento de dados com uma interface sólida para macos e um robusto backend back4app, você está agora bem equipado para desenvolver aplicativos de desktop ricos em recursos, escaláveis e seguros continue explorando funcionalidades mais avançadas, integre sua lógica de negócios e aproveite o poder do back4app para economizar inúmeras horas na administração de servidores e bancos de dados próximos passos construa um aplicativo macos pronto para produção estendendo este backend para lidar com modelos de dados mais complexos, estratégias de cache e otimizações de desempenho integre recursos avançados como fluxos de autenticação especializados, controle de acesso baseado em funções ou apis externas (como gateways de pagamento) confira a documentação oficial do back4app para mergulhos mais profundos em segurança avançada, ajuste de desempenho e análise de logs explore outros tutoriais sobre comunicação em tempo real, painéis de iot ou serviços baseados em localização combine as técnicas aprendidas aqui com apis de terceiros para criar aplicativos complexos do mundo real