百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术文章 > 正文

Directus 数据库内容的实时 API 和应用程序仪表板

ccwgpt 2025-02-26 11:15 36 浏览 0 评论

《开源精选》是我们分享Github、Gitee等开源社区中优质项目的栏目,包括技术、学习、实用与各种有趣的内容。本期推荐的Directus 是用于管理 SQL 数据库内容的实时 API 和应用程序仪表板。

Directus介绍

Directus 是用于管理 SQL 数据库内容的实时 API 和应用程序仪表板。

  • 免费和开源。没有人为限制、供应商锁定或隐藏的付费墙。
  • REST 和 GraphQL API。立即在任何 SQL 数据库之上构建速度极快的 Node.js API。
  • 管理纯 SQL。适用于新的或现有的 SQL 数据库,无需迁移。
  • 选择您的数据库。支持 PostgreSQL、MySQL、SQLite、OracleDB、CockroachDB、MariaDB 和 MS-SQL。
  • 本地或云。在本地运行、在本地安装或使用我们的 自助云服务(提供免费套餐)。
  • 完全可扩展。内置白标,很容易定制我们的模块化平台。
  • 现代仪表板。我们的无代码 Vue.js 应用程序对于非技术用户来说是安全且直观的,无需培训。

这个怎么运作

Directus 作为层安装在新的或现有的 SQL 数据库之上。

应用程序和 API 实时动态地“镜像”您的实际架构和内容。这类似于技术数据库客户端(如phpMyAdmin)的工作方式。但是,Database Introspection 有许多独特的优势:

  • 绝对控制您的纯 SQL 数据库模式。
  • 为您的数据提供完全的透明度、可移植性和安全性。
  • 允许导入现有数据库,无需更改且无需迁移。
  • 直接数据库访问和原始复杂 SQL 查询的全部功能。
  • 通过优化和索引显着提高性能。

它是给谁的?

Directus 让整个团队一起工作并在一个地方访问数据。

开发
人员 开发 人员获得了一个完整的数据连接工具包,其中包含 REST 和 GraphQL API、一个 JavaScript SDK、访问全局变量以自定义配置选项,以及对数字资产的直接命令行访问。

高级用户
数据分析师和数据科学家拥有应用内工具来查询数据、构建应用内分析仪表板以及以文件格式提取或上传数据。此外,这些用户仍然可以自由链接其他服务并直接在数据库上运行原始 SQL 查询。

商业用户
无代码应用程序足够安全和直观,可以让每个人都可以访问数据,即使是最非技术的用户。管理员可以为角色以及单个用户创建完全精细的权限。

安装

通过运行以下 npm 命令创建一个新的 Directus 项目:

npm init directus-project my-project

或者,使用纱线:

yarn create directus-project my-project

只需按照设置提示操作,CLI 就会创建您的新项目目录(例如:)my-project、配置文件和初始数据库。为了充分利用 Directus,并确保您拥有最新的安全补丁,让您的项目保持最新非常重要。

要求

Directus 只需要 Node.js 并支持大多数操作系统和 SQL 数据库供应商。

  • Node.js 12.20+
  • npm 6.x+

支持的数据库

  • PostgreSQL 10+
  • MySQL 5.7.8+ / 8+(带有 mysql_native_password)
  • MariaDB 10.2.7+
  • SQLite 3+
  • CockroachDB 21.1.13+ [1]
  • 微软 SQL 13+ [1]
  • OracleDB 19+ [1]

旧版本可能有效,但未经官方测试/支持。

支持的操作系统

  • Ubuntu 18.04
  • CentOS / RHEL 8
  • macOS Catalina 或更新版本
  • 视窗 10/11
  • Docker(DockerHub + Dockerfile)

API 参考

动态 API

该平台的 API 使用数据库镜像动态生成 REST 端点和基于连接数据库架构的 GraphQL 模式。由于这些端点根据您的特定架构和配置的权限返回数据,因此 API 的输入/输出对于各个安装有很大不同。

REST 与 GraphQL

REST 和 GraphQL 端点之间的可用功能没有区别。两者中可用的功能都映射到同一组核心服务,这意味着您不会因选择其中一个而失去任何性能或功能。

验证

默认情况下,系统中的所有数据对未经身份验证的用户都是禁止访问的。要获得对受保护数据的访问权限,您必须 在每个请求中包含访问令牌,或者 为公共角色配置权限。

关系数据

Directus 仅检索项目中明确请求的字段。可以使用 REST 中的fields参数或 GraphQL 中的常规嵌套查询来嵌套检索关系数据。例如,这允许您检索文章数据中包含的文章作者,或获取应用程序分析数据的相关日志入口点。

#创建/更新/删除

与获取类似,关系内容也可以进行深度修改。

#多对一

多对一关系的关系管理相当简单。您可以简单地将所需的更改作为对象提交到集合中的关系键下。例如,如果您想在页面上创建新的特色文章,您可以提交:

{
	"featured_article": {
		"title": "This is my new article!"
	}
}

这将在相关集合中创建一条新记录,并将其主键保存在featured_article该项目的字段中。要更新现有项目,只需提供更新的主键,Directus 会将其视为更新而不是创建:

{
	"featured_article": {
		"id": 15,
		"title": "This is an updated title for my article!"
	}
}

看到多对一关系将外键存储在字段本身上,可以通过使字段无效来删除项目:

{
	"featured_article": null
}

#一对多(/多对多)

一对多,因此多对多和多对任意关系可以通过以下两种方式之一进行更新:

基本的

API 将返回一对多字段作为嵌套键或项的数组(基于fields参数)。您可以使用相同的结构来选择相关项目是什么:

{
	"children": [2, 7, 149]
}

您还可以提供一个对象而不是主键来动态创建嵌套的新项目,或者提供一个包含主键的对象来更新现有项目:

{
	"children": [
		2, // assign existing item 2 to be a child of the current item
		{
			"name": "A new nested item"
		},
		{
			"id": 149,
			"name": "Assign and update existing item 149"
		}
	]
}

要从此关系中删除项目,只需从数组中省略它们:

{
	"children": [2, 149]
}

这种更新一对多的方法对于较小的关系数据集非常有用。

项目设置

一般的

  • 项目名称——导航栏顶部和登录/公共页面上使用的名称
  • 项目描述符- 显示在导航栏顶部项目名称下方 和登录/公共页面上的描述符
  • 项目 URL - 单击模块栏顶部的徽标时的 URL
  • 默认语言- 应用程序中使用的默认语言。

模块

  • 模块栏- 允许对模块栏中显示的链接进行以下自定义。通过切换复选框显示或隐藏模块,通过拖动排序手柄重新排序链接,或使用以下字段创建新的自定义链接:Name - 模块链接的标题,也显示在悬停时的工具提示中图标- 选择模块按钮的图标URL — 应以Directus 应用程序/中的链接开头

#安全

  • Auth Password Policy — 通过 JavaScript 正则表达式为所有用户的密码设置策略要求。支持以下选项:无 — 不推荐弱 - 至少 8 个字符强 - 大写、小写、数字和特殊字符
  • Auth Login Attempts — 设置在用户帐户被锁定之前允许的失败登录尝试次数。锁定后,需要管理员用户解锁帐户。

文件和存储

该平台的文件中间件允许即时裁剪和转换图像资产。这意味着您可以简单地请求原始图像,包括任何所需的转换参数,并且您将获得新资产作为响应。

要通过请求大量随机大小来阻止恶意用户消耗您的存储空间,您可以使用以下选项来限制可能的转换。

  • Allowed Transformations - 用于启用、禁用或限制图像转换
  • 默认文件夹— 设置添加新资产的默认文件夹。这不会影响现有文件。请注意,字段可能会覆盖此值。
  • 转换预设- 允许设置特定的图像转换以简化请求或限制使用。Key - 一个唯一标识符,允许更快、更轻松的图像转换请求适合 - 包含(保留纵横比)、覆盖(强制精确大小)、适合内部或适合外部宽度 - 图像的宽度高度 - 图像的高度质量 - 图像的压缩或质量放大 - 启用后,图像不会被放大格式 - 允许将输出格式更改为:JPG、PNG、WebP 或 TIFF

自定义面板

扩展入口点

面板的入口点是扩展包文件夹index内的文件。src/它导出一个配置对象,其中包含配置面板行为的选项。加载面板时,此对象由 Directus 主机导入。

入口点示例:

import PanelComponent from './panel.vue';

export default {
	id: 'custom',
	name: 'Custom',
	icon: 'box',
	description: 'This is my custom panel!',
	component: PanelComponent,
	options: [
		{
			field: 'text',
			name: 'Text',
			type: 'string',
			meta: {
				interface: 'input',
				width: 'full',
			},
		},
	],
	minWidth: 12,
	minHeight: 8,
};

可用选项

  • id— 此面板的唯一键。使用作者前缀限定专有面板的范围是一种很好的做法。
  • name— 此面板的可读名称。
  • icon— 来自材料图标集的图标名称,或 Directus 自定义图标的扩展列表。
  • description— 应用程序中显示的此面板的简短说明(<80 个字符)。
  • component— 对您的面板组件的引用。
  • options— 面板的选项。可以是选项对象或专用的 Vue 组件。
  • minWidth- 仪表板上面板的最小网格单位宽度。
  • minHeight- 仪表板上面板的网格单位的最小高度。

面板组件

面板组件是扩展程序的一部分,当您的面板应用于 Insights 模块内的仪表板中的数据可视化时,Directus 应用程序将呈现该组件。这个面板组件必须是 Vue 组件。编写 Vue 组件最直接的方法是使用 Vue 单文件组件语法。

使用 Vue SFC 语法的面板组件示例:






#可用道具

  • showHeader boolean — 是否显示标题。对于基于额外/减少空间的替代样式很有用。
  • dashboard uuid - 包含面板的仪表板的 UUID 字符串。
  • height number - 面板的当前配置高度。
  • width number - 面板的当前配置宽度。
  • now Date - 查看包含面板的仪表板时的 Date 对象。


—END—

开源协议:GPL-3.0

开源地址:
https://github.com/directus/directus

相关推荐

MFC、Qt、WPF?该用哪个?(mfc和wpf区别)

MFC、Qt和WPF都是流行的框架和工具,用于开发图形用户界面(GUI)应用程序。选择哪个框架取决于你的具体需求和偏好。MFC(MicrosoftFoundationClass)是微软提供的框架,...

一款WPF开发的通讯调试神器(支持Modbus RTU、MQTT调试)

我们致力于探索、分享和推荐最新的实用技术栈、开源项目、框架和实用工具。每天都有新鲜的开源资讯等待你的发现!项目介绍Wu.CommTool是一个基于C#、WPF、Prism、MaterialDesign...

关于面试资深C#、WPF开发工程师的面试流程和问题

一、开场(2-3分钟)1.欢迎应聘者,简单介绍公司和面试流程。2.询问应聘者是否对公司或岗位有初步的问题。二、项目经验与技术应用(10-20分钟)1.让应聘者详细介绍几个他参与过的C#、...

C# WPF MVVM模式Prism框架下事件发布与订阅

01—前言处理同模块不同窗体之间的通信和不同模块之间不同窗体的通信,Prism提供了一种事件机制,可以在应用程序中低耦合的模块之间进行通信,该机制基于事件聚合器服务,允许发布者和订阅者之间通过事件进行...

WPF 机械类组件动画制作流程简述(wps上怎么画机械结构简图)

WPF机械类组件动画制作流程简述独立观察员2025年3月4日一、创建组件创建组件用户控件,将组件的各部分“零件”(图片)拼装在一起,形成组件的默认状态:二、给运动部分加上Rend...

C#上位机WinForm和WPF选哪个?工控老油条的&quot;血泪史&quot;

作为一个从互联网卷进工控坑的"跨界难民",在这会摸鱼的时间咱就扯一下上位机开发选框架这档子破事。当年我抱着WPF的酷炫动画一头扎进车间,结果被产线老师傅一句"你这花里胡哨的玩意...

【一文扫盲】WPF、Winform、Electron有什么区别?

近年来,随着软件开发的不断发展,开发人员面临着选择适合他们项目的各种框架和工具的挑战。在桌面应用程序开发领域,WPF、Winform和Electron是三个备受关注的技术。本文将介绍这三者的区别,帮助...

一个开源、免费、强大且美观的WPF控件库

我们致力于探索、分享和推荐最新的实用技术栈、开源项目、框架和实用工具。每天都有新鲜的开源资讯等待你的发现!项目介绍HandyControl是一套基于WPF(WindowsPresentationF...

WPF 根据系统主题自动切换浅色与深色模式

WPF根据系统主题自动切换浅色与深色模式控件名:Resources作者:WPFDevelopersOrg-驚鏵原文链接[1]:https://github.com/WPFDevelopers...

WPF与WinForm的本质区别(wpf与maui)

在Windows应用程序开发中,WinForm和WPF是两种主要的技术框架。它们各自有不同的设计理念、渲染机制和开发模式。本文将详细探讨WPF与WinForm的本质区别,并通过示例进行说明。渲染机制W...

Win10/Win11效率神器再进化:微软发布PowerToys 0.90.0版本

IT之家4月1日消息,微软今天(4月1日)更新PowerToys,在最新发布的0.90.0版本中,修复多个BUG之外,引入多项功能更新,为Windows10、Windows...

一款非常漂亮的WPF管理系统(wpf架构及特性)

我们致力于探索、分享和推荐最新的实用技术栈、开源项目、框架和实用工具。每天都有新鲜的开源资讯等待你的发现!WPFManager项目介绍该项目是一款WPF开发的管理系统,数据库采用的MSSqlserv...

WPF 实现描点导航(wpf按钮的点击事件)

WPF实现描点导航控件名:NavScrollPanel作者:WPFDevelopersOrg-驚鏵原文链接[1]:https://github.com/WPFDevelopersOrg/WPF...

微软更新基于Win11的Validation OS 2504:增强 .NET与WPF

IT之家5月1日消息,科技媒体NeoWin今天(5月1日)发布博文,报道称微软公司更新基于Windows11的ValidationOS,增强支持.NET和WPF,并优...

WPF的技术架构与优势(wpf的前景)

WindowsPresentationFoundation(WPF)是一个现代化的用户界面框架,专为构建Windows应用程序而设计。它通过分层的技术架构和丰富的功能集,提供了全面的应用程...

取消回复欢迎 发表评论: