免费开源的后端API服务-supabase安装和使用-简直是前端学习者福音

文章目录

    • 它是什么
    • 安装和部署
        • 关于安装
        • 关于部署
          • 1、注册用户
          • 2、创建组织
          • 3、创建项目
    • 创建数据库表(填充内容)
        • 填充数据库表
    • 使用postman联调API

它是什么

一个开源免费的后端框架,firebase的替代品。可以简单理解类似于headless cms,但是不仅仅只提供内容,它还集成了服务订阅、即时API,用户身份认证(包括第三方身份认证,比如使用githubGoogle等账号实现快速登录和注册)、边缘函数、文件存储等功能。

Supabase is an open source Firebase alternative.

Start your project with a Postgres database, Authentication, instant APIs, Edge Functions, Realtime subscriptions, Storage, and Vector embeddings.

截止到2024-7-1的github start数:68.2K

安装和部署

关于安装

首先,它是基于SaaS云服务的。意味着,你可以部署到自有服务器,也可以免费注册一个它的账户,然后直接创建一个组织和项目来享受免费的在线的 API后端服务。

因为只是试用,所以我并没有打算部署到自有服务器中。

那就先薅一下羊毛吧。

免费用户也拥有蛮不错的配置:

订阅服务

免费用户能享受到的配置包括:

  • 无限的接口请求
  • 5w个月活用户
  • 500M数据库存储空间
  • 5GB宽度
  • 1GB文件存储(存储图片、文件、音视频等)

这个配置如果是自己在国内云厂商买的,即使是新用户,起码也值99元首年了。

关于部署

可以部署到自有服务器,后续将更新教程。

这里我们是直接在它的官网上创建一个新的项目就可以使用它的API。

所以这里的部署指的是如何注册用户、创建组织和项目等。

1、注册用户

首先的好消息是,国内可用,不需要翻墙,而且速度有保障。

注册只需要一个email即可,然后到email接收一个验证码进行认证即可。不需要填写手机号、身份认证等。

免费注册用户

2、创建组织

创建组织,并不代表要公司名义,可以是个人。

组织名称可以在后续修改。

另外虽然我们用的是免费计划,但是可以创建多个组织和项目。

创建组织

3、创建项目

创建项目,相当于是在安装一个backend了,即后端服务。

它会帮我们创建一个PostgreSQL的数据库。

在这一步,我们只需要输入项目名称,数据库密码,然后选择区域即可。

国内建议选择新加坡。

区域选择

一切就绪,现在你就有了一个没有任何内容的后台了。

dashboard

它会给你生成一个项目的后端地址,在该地址中可以看到访问key,管理项目,对项目数据进行增删改查等。

但是它提供的supabase创建的是纯后台,只提供了一个简单的后台管理UI能对数据进行CRUD操作,所以更多时候我们需要通过前端框架,比如vuenuxtjs等进行开发来实现你的后台管理或前端页面。

这也意味着它是一个绝佳的纯API接口服务,能让我们随心制造自己想要的数据并通过接口来访问。

接下来,我们可以在该后台添加一张数据库表,以便使用postmanAPI调试工具来调试接口,为后续的API开发做准备。

创建数据库表(填充内容)

创建数据库表有2种方式,一种是可视化的table editor,另外一种是SQL editor

接下来我将使用第二种方式来运行SQL创建一张Users表。

点击SQL editor,在textarea中输入如下SQL代码:

-- Step 1: Create the trigger function
CREATE OR REPLACE FUNCTION trigger_set_timestamp()
RETURNS TRIGGER AS $$
BEGINNEW.updated_at = NOW();RETURN NEW;
END;
$$ LANGUAGE plpgsql;-- Step 2: Create the users table
CREATE TABLE users (id UUID PRIMARY KEY DEFAULT gen_random_uuid(),username VARCHAR(50) UNIQUE NOT NULL,email VARCHAR(100) UNIQUE NOT NULL,password_hash TEXT NOT NULL,created_at TIMESTAMP WITH TIME ZONE DEFAULT CURRENT_TIMESTAMP,updated_at TIMESTAMP WITH TIME ZONE DEFAULT CURRENT_TIMESTAMP
);-- Step 3: Create the trigger to update the updated_at column
CREATE TRIGGER update_timestamp
BEFORE UPDATE ON users
FOR EACH ROW
EXECUTE FUNCTION trigger_set_timestamp();

在以上SQL中,我创建了一个触发器,为什么创建一个trigger,是因为:为了确保 updated_at 字段能够在当前行被修改后自动更新。

To ensure the updated_at column is automatically updated whenever a row is modified.

这一步还只是创建了一个包含了指定字段的空白的数据库表

填充数据库表

我们可以手动插入一条数据

插入一条数据

点击insert,这样就用可视化的方式插入了一条数据记录。

现在这个项目就已经成型了。

但是在我们使用前端创建UI界面前,我们啥都看不到。

使用postman联调API

下一篇文章,我将使用postman来联调API,为接下来的UI开发做准备。

如果你在web前端开发、面试、前端学习路线有困难可以在下方加我名片,免费答疑,行业深潜多年的技术牛人帮你解决bug。

我可提供web前端开发,网站开发、技术咨询、答疑、直播讲座等服务

祝你能成为一名优秀的WEB前端开发工程师!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/365760.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

浅谈定时器之泊松随机定时器

浅谈定时器之泊松随机定时器 “泊松随机定时器”(Poisson Random Timer),它允许你基于泊松分布来随机化请求之间的延迟时间,这对于模拟具有随机到达率的事件特别有用,如用户访问网站或服务的请求。 泊松分布简介 泊松分布是一种统计与概率…

HarmonyOS开发探索:父子组件手势绑定问题处理

场景一:父子组件同时绑定手势的冲突处理 效果图 方案 在默认情况下,手势事件为非冒泡事件,当父子组件绑定相同的手势时,父子组件绑定的手势事件会发生竞争,最多只有一个组件的手势事件能够获得响应,默认子…

有哪些方法可以恢复ios15不小心删除的照片?

ios15怎么恢复删除的照片?在手机相册里意外删除了重要的照片?别担心!本文将为你介绍如何在iOS 15系统中恢复已删除的照片。无需专业知识,只需要按照以下步骤操作,你就能轻松找回宝贵的回忆。 一、从iCloud云端恢复删除…

Transformer动画讲解 - 工作原理

Transformer模型在多模态数据处理中扮演着重要角色,其能够高效、准确地处理包含不同类型(如图像、文本、音频、视频等)的多模态数据。 Transformer工作原理四部曲:Embedding(向量化)、Attention(注意力机制)、MLPs(多层感知机)和Unembedding(模型输出)。 阶段一:…

网上下载的PDF文件为何不能复制文字?该怎么办呢?

不知道大家有没有到过这种情况?在网上下载的PDF文件打开之后,发现选中文字之后无法复制。甚至其他功能也都无法使用,这是怎么回事?该怎么办? 首先,有可能PDF文件是扫描文件,是扫描文件的话&…

Gradle学习-4 创建二进制插件工程

二进制插件工程创建有两种方式: 创建独立的工程,调试的时候,需要手动发布成一个二进制插件jar包,给其他工程里面引用,进行功能测试。这种方式是比较麻烦的。创建buildSrc子工程,它是一个大工程中的子工程&…

云计算【第一阶段(19)】磁盘管理与文件系统 LVM与磁盘配额(二)

目录 一、LVM概述 1.1、LVM机制的基本概念 ​编辑 1.2、LVM的管理命令 1.3、lvm存储 两种机制 1.4、lvm应用实例 二、磁盘配额概述 2.1、设置磁盘配额 2.2.1、实现磁盘限额的条件 2.2.2、linux磁盘限额的特点 2.2.3、磁盘配额管理 一、LVM概述 1.1、LVM机制的基本概…

大模型ReAct:思考与工具协同完成复杂任务推理

ReAct: Synergizing Reasoning and Acting in Language Models Github:https://github.com/ysymyth/ReAct 一、动机 人类的认知通常具备一定的自我调节(self-regulation)和策略制定(strategization)的能力&#xff0…

Java案例抢红包

目录 一:题目要求: 二:思路分析:(遇见问题先想出完整的思路逻辑再去动手事半功倍) 三:具体代码: 一:题目要求: 二:思路分析:&#x…

武汉星起航:跨境电商流量红利爆发,2023年出海企业迎突破增长

在数字时代的浪潮中,中国跨境电商以惊人的爆发力崭露头角,成为全球贸易的璀璨新星。2023年数据显示,跨境电商出口额高达1.83万亿元,同比增长19.6%,这一显著增速不仅刷新纪录,更为众多出海企业带来了前所未有…

【RabbitMQ问题踩坑】RabbitMQ设置手动ack后,消息队列有多条消息,只能消费一条,就不继续消费了,这是为什么 ?

现象:我发送5条消息到MQ队列中,同时,我在yml中设置的是需要在代码中手动确认,但是我把代码中的手动ack给关闭了,会出现什么情况? yml中配置,配置需要在代码中手动去确认消费者消费消息成功&…

浅谈Mysql Innodb存储引擎

一、Mysql整体架构 二、MySQL 5.7 支持的存储引擎 类型 描述 MyISAM 拥有较高的插入、查询速度,但不支持事务 InnoDB 5.5版本后Mysql的默认数据库,5.6版本后支持全文索引,事务型数据库的首选引擎,支持ACID事务,支…

Android Lint

文章目录 Android Lint概述工作流程Lint 问题问题种类警告严重性检查规则 用命令运行 LintAndroidStudio 使用 Lint忽略 Lint 警告gradle 配置 Lint查找无用资源文件 Android Lint 概述 Lint 是 Android 提供的 代码扫描分析工具,它可以帮助我们发现代码结构/质量…

linux中 nginx+tomcat 部署方式 tomcat挂掉设置自动启动

在Linux环境下,要实现当Tomcat挂掉后自动重启,可以通过编写Shell脚本结合cron定时任务或者使用系统守护进程(如Systemd、Upstart或SysVinit)来完成。 使用Shell脚本和cron定时任务 编写检查并重启Tomcat的Shell脚本:首…

为什么网络爬虫广泛使用HTTP代理?

一、引言 网络爬虫作为自动抓取互联网信息的重要工具,在现代社会中发挥着不可或缺的作用。然而随着网络环境的日益复杂,网站反爬虫技术的不断进步,网络爬虫在获取数据的过程中面临着越来越多的挑战。为了应对这些挑战,HTTP 代理成…

Python容器 之 字符串--定义

目录 1.字符串如何定义? 2.定义字符串时遇到特殊内容怎么处理? 1)字符串本身包含引号,如:定义字符串 Im 小明、他叫“小明”。 (1)如果字符串本身包含单引号,定义的时候不能使用 单引号。 &#xff08…

【Linux】Linux下使用套接字进行网络编程

🔥博客主页: 我要成为C领域大神🎥系列专栏:【C核心编程】 【计算机网络】 【Linux编程】 【操作系统】 ❤️感谢大家点赞👍收藏⭐评论✍️ 本博客致力于知识分享,与更多的人进行学习交流 ​ 用于网络应用开…

SAP 替代关系完全替代简介

最近用户在对长周期物料进行备料的时候又提出替代料的问题,主料库存不足的时候需要考虑替代料的在途库存,经常会忘了SAP标准的替代料逻辑,这次一次性把这个逻辑写清楚。 关于替代料的逻辑在前面的博文中测试多个替代料的使用场景 1、后继物料 2、组合替代 本文主要测试一下…

Sentinel如何使用BlockExceptionHandler实现限流/降级错误页面显示

1、修改配置项,打开对Spring MVC端点的保护 spring.cloud.sentinel.filter.enabledtrue 2、编写 BlockExceptionHandler的实现类 MyUrlBlockHandler.java package com.codex.terry.sentinel.urlblockhandler;/*** 文件名称: MyUrlBlockHandler.java* 编写人: yh…

解决ssh: connect to host IP port 22: Connection timed out报错(scp传文件指定端口)

错误消息 ssh: connect to host IP port 22: Connection timed out 指出 SSH 客户端尝试连接到指定的 IP 地址和端口号(默认 SSH 端口是 22),但是连接超时了。这意味着客户端没有在预定时间内收到来自服务器的响应。 可能的原因 SSH 服务未…