Skip to content

Example Guide

Eidos 并没有提供 RESTful API,而是提供了一个函数调用接口。Eidos 的扩展默认都在 Eidos 提供的容器中运行。API 和 SDK 采用相同的调用方式。

如何在扩展环境中使用 Eidos SDK

扩展环境中,script 和 micro block 都可以使用 Eidos SDK 和 Eidos 中的数据进行交互,script 专注于数据处理,micro block 专注于数据展示和交互。

在全局提供一个名为 eidos 的对象,扩展中可以直接使用。

eidos.currentSpace

eidos.currentSpace 代表当前的 Eidos 空间,扩展中可以调用 eidos.currentSpace 获取当前空间的数据。 eidos.space('space_name') 可以获取指定名称的空间数据。

const rows = await eidos.currentSpace.table("table_id").rows.query();

环境变量

process.env.MY_ENV_VAR

Bindings

尽管可以通过 eidos.currentSpace.table("table_id") 获取数据,为了代码的泛用性,可以通过 Bindings 来绑定指定的表格。使用 Bindings 利于扩展的分发。

alt text

const rows = await eidos.currentSpace.SONGS.rows.query();

如何使用 API

Eidos 提供了一个 RPC 接口,可以通过 POST 请求调用 Eidos 中的方法。

web app 无法直接提供 API 服务,需要单独启动一个 HTTP 服务。详情参考: https://github.com/mayneyao/eidos-api-agent-node

示例

使用 python 请求 Eidos 的 RPC 接口。获取 my-space 空间中的所有节点。这个调用等价于 SDK 中 eidos.space('my-space').listTreeNodes()

import requests
r = requests.post('http://localhost:13127/rpc', json={
'space': 'my-space',
'method': 'listTreeNodes',
'params': []
})
print(r.json())

参数

{
"space": "<database name>",
"method": "sqlQuery",
"params": ["select * from tb_44d6193623544426873507e10f3cfd7f", [], "object"]
}