Github每日精选(第63期):口袋数据库pocketbase

pocketbase

pocketbase 口袋数据库,在开发的过程中,我们经常有这样的需求,前端需要用到数据库的数据,但是前端不能直接获取,需要通过服务器进行一层的中转,其实有的时候这个工作量是很重复的,如果有现成的,能够只进行相应的配置,又具有一定的安全性,重复的工作量完全是可以避免的。

pocketbase 就是为了这个需求而生。

在这里插入图片描述
github的地址在这里

PocketBase是一个开源的 Go 后端,包括:

  • 具有实时订阅的嵌入式数据库 ( SQLite )
  • 内置文件和用户管理
  • 方便的管理仪表板 UI
  • 和简单的 REST-ish API
安装

最简单的入门方法是下载预构建的最小 PocketBase 应用程序,windows 的使用下载exe,下载的地址在这里:下载适用于 Windows

启动服务器:

pocketbase.exe serve --debug

提示如下:

[0.00ms] SELECT {{_params}}.* FROM `_params` WHERE `key`='settings' LIMIT 1
[0.00ms] CREATE TABLE IF NOT EXISTS `_migrations` (file VARCHAR(255) PRIMARY KEY NOT NULL, applied INTEGER NOT NULL)
[0.00ms] SELECT count(*) FROM `_migrations` WHERE `file`='1640988000_init.go' LIMIT 1
[0.00ms] SELECT count(*) FROM `_migrations` WHERE `file`='1661586591_add_externalAuths_table.go' LIMIT 1
[0.00ms] SELECT {{_params}}.* FROM `_params` WHERE `key`='settings' LIMIT 1
> Server started at: http://127.0.0.1:8090
  - REST API: http://127.0.0.1:8090/api/
  - Admin UI: http://127.0.0.1:8090/_/

大概的意思是,我们有三个api的地址,我们打开第三个 Admin UI ,注册一个账号,进入管理员界面。

在这里插入图片描述

在这里我们已经建立了一个数据表,

在这里插入图片描述
总共三个字段。访问的规则如下:

在这里插入图片描述

这时候我们访问接口,就有相应的数据了。

在这里插入图片描述

做起接口来非常的方便,就像是在第三方上开通一个api一样。

如果想直接使用代码进行控制的话,如下的代码可以进行路由的控制和返回:

package main

import (
    "log"
    "net/http"

    "github.com/labstack/echo/v5"
    "github.com/pocketbase/pocketbase"
    "github.com/pocketbase/pocketbase/apis"
    "github.com/pocketbase/pocketbase/core"
)

func main() {
    app := pocketbase.New()

    app.OnBeforeServe().Add(func(e *core.ServeEvent) error {
        // add new "GET /api/hello" route to the app router (echo)
        e.Router.AddRoute(echo.Route{
            Method: http.MethodGet,
            Path:   "/api/hello",
            Handler: func(c echo.Context) error {
                return c.String(200, "Hello world!")
            },
            Middlewares: []echo.MiddlewareFunc{
                apis.RequireAdminOrUserAuth(),
            },
        })

        return nil
    })

    if err := app.Start(); err != nil {
        log.Fatal(err)
    }
}
  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

go2coding

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值