灵魂| sqlite Restful服务器
#node #api #sqlite #realtime

大家好,
在过去的几周中,我一直在研究Soul。如标题所述,这是一台SQLite Restful服务器。简单地说,Soul获取一个SQLite数据库文件,并为您提供完整的CRUD API来使用您的数据库。灵魂的最终目标是成为想要快速引导项目的人们成为一个后端,以实现。

我从SupabasePocketbase中构建灵魂的灵感,但主要是Pocketbase。
但是问题是为什么何时有袖珍的灵魂。原因是GO vs. JavaScript。 PocketBase是用GO编写的,因此要扩展它,您需要知道GO,它比Javascipt / node.js不那么受欢迎。我使用node.js开发灵魂,因为我相信它可以使更大的社区能够与之合作。特别是已经熟悉JavaScript的前端开发人员。

快速开始

从灵魂开始非常简单,首先您需要安装它:

npm install -g soul-cli

然后您需要运行它:

soul -d your-sqlite-db.sqlite -p 8000

瞧,灵魂在港口8000上听!

更深入的步行

要查看灵魂的某些功能,让我们首先下载一个示例数据库:

wget https://raw.githubusercontent.com/lerocha/chinook-database/master/ChinookDatabase/DataSources/Chinook_Sqlite.sqlite

,然后开始阅读此数据库:

soul -d ./Chinook_Sqlite.sqlite -p 8000

很棒,现在让我们看看它拥有多少桌:

curl 'localhost:8000/api/tables'

灵魂会返回这样的东西:

{
  "data": [
    { "name": "Album" },
    { "name": "Artist" }
    // ...
  ]
}

到目前为止一切都很好,现在说我们想浏览专辑:

curl 'localhost:8000/api/tables/Album/rows/'

灵魂会以这样的方式做出回应:

{
  "data": [
    {
      "AlbumId": 1,
      "Title": "For Those About To Rock We Salute You",
      "ArtistId": 1
    },
    { "AlbumId": 2, "Title": "Balls to the Wall", "ArtistId": 2 }
    // ...
  ],
  "total": 347,
  "next": "/tables/Album?page=2",
  "previous": null
}

那么,如果我们想搜索rock_search)一词怎么办?我们也想扩展相关的ArtistId_extend),我们只想撰写ID为90(_filters)的艺术家专辑。让我们更复杂,假设我们要限制每个页面20行(_limit),我们想要第一页(_page)。另外,让我们获得Title,我们不需要AlbumIdArtistId_schema)。

curl 'localhost:8000/api/tables/Album/rows?_page=1&_limit=20&_search=rock&_ordering=-Title&_schema=Title,ArtistId&_extend=ArtistId&_filters=ArtistId:90'

灵魂会以这样的方式做出回应:

{
  "data": [
    {
      "Title": "Rock In Rio [CD2]",
      "ArtistId": 90,
      "ArtistId_data": { "ArtistId": 90, "Name": "Iron Maiden" }
    },
    {
      "Title": "Rock In Rio [CD1]",
      "ArtistId": 90,
      "ArtistId_data": { "ArtistId": 90, "Name": "Iron Maiden" }
    }
  ],
  "total": 2,
  "next": null,
  "previous": null
}

好吧,现在您有了一些想法,灵魂如何运作以及它可以如何帮助您进行项目。

如果您想要更多这些示例,请结帐Soul的API示例,here

如果您有任何问题,请在Soul的GitHub存储库中创建一个问题。我会尽快回复。

您有一些想法可以使灵魂成为更好的工具?不要犹豫,向我发送电子邮件至thevahidal [at] gmail [dot] com

感谢您阅读本文,我将在下一个见到您!