大家好,
在过去的几周中,我一直在研究Soul。如标题所述,这是一台SQLite Restful服务器。简单地说,Soul获取一个SQLite数据库文件,并为您提供完整的CRUD API来使用您的数据库。灵魂的最终目标是成为想要快速引导项目的人们成为一个后端,以实现。
我从Supabase和Pocketbase中构建灵魂的灵感,但主要是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
,我们不需要AlbumId
和ArtistId
(_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
。
感谢您阅读本文,我将在下一个见到您!