跳转到主要内容

此立方体是CubicWeb 4中将集成的新的API。

项目描述

此立方体公开了新的API,用更简单的架构替换了RQLController立方体。我们计划将此新API直接集成到CubicWeb中,而不必依赖于此立方体。

您可以使用CubicWebJS客户端在JavaScript中与此API通信。请参阅项目React Admin CubicWeb,了解如何使用CubicWebJS

⚠️ 请注意,此立方体将稍后集成到CubicWeb中。安装说明仅适用于API立方体在其自己的存储库中存在时。

愿景

目标是提供一个最小的API界面,类似于兼容SPARQL的数据服务器。为此,此API主要提供发送RQL请求的路由。

只有几个辅助端点用于登录、获取数据模式以及获取有关服务器设置的调试信息。这些端点要么在RQL中无法表达,要么是简化调试所必需的。

我们不会创建端点以简化常见的RQL请求。相反,提供辅助工具以简化请求创建的责任在于每个客户端。

如果您通过RQL表达需求有困难,请在我们Matrix频道提问或打开CubicWeb存储库上的问题。根据需要,我们可能会更新RQL以添加新功能!

设置

通过运行以下命令使用pip安装此立方体

pip install cubicweb_api

然后打开您的 CubicWeb 实例的 __pkginfo__.py 文件,并在 __depends__ 字典中添加 cubicweb-api

现有实例

如果您要将 API 添加到现有实例,则需要手动添加立方体并运行迁移。为此,请运行以下命令(将 <YOUR_INSTANCE> 替换为您的实例名称)

使用 cubicweb-ctl shell <YOUR_INSTANCE> 打开一个 shell。在该 shell 中输入 add_cube(api),然后输入 exit() 离开 shell。

最后升级您的实例

cubicweb-ctl upgrade <YOUR_INSTANCE>

该命令将提示您编辑 all-in-one.conf 文件。接受更改以写入此立方体可用的默认配置选项。

配置选项

pyramid.ini 中提供了几个配置选项

cubicweb_api.api_path_prefix

在主机名之后提供 API 的路径。默认为 api。API 版本号将添加到该前缀之后(目前只有 v1)。

示例

对于部署在 http://localhost:8080 上的 cubicweb 实例。

API 将默认部署在 http://localhost:8080/api/v1

如果您将选项设置为 cubicweb_api.api_path_prefix = my/custom/path,它将部署在 http://localhost:8080/my/custom/path/v1

cubicweb.includes = cubicweb_api.auth.routes

包括 cubicweb_api.auth.routes 以启用登录和注销路由。这些路由将使用在 cubicweb 中启用的任何身份验证策略。

cubicweb.includes = cubicweb_api.auth.jwt

包括 cubicweb_api.auth.jwt 以启用 JWT Cookie 身份验证策略。

⚠️ 此功能为实验性,请不要在生产环境中使用

可用路由

此立方体使用 OpenAPI 规范来描述和验证数据。完整的规范可在 openapi_template.yaml 中找到。

在运行实例上,<PREFIX>/openapi 路由以交互式 HTML 页面提供规范(默认设置为 http://localhost:8080/api/v1/openapi)。<PREFIX>/openapi.yaml 路由提供原始 YAML 文件。

身份验证

向登录路由发送有效凭据时,将在 Set-Cookie 标头中生成并发送一个 JWT 令牌。此令牌必须作为 cookie 发送,每个请求才能成功。

请注意,默认情况下禁用了登录路由(请参阅“配置选项”部分)。

故障排除

Pyramid

根据您的 pyramid 配置,您可能需要手动包括 api 路由,通过在您的 pyramid.ini 中添加此行来完成

cubicweb.includes = cubicweb_api

项目详情


下载文件

下载适用于您平台的文件。如果您不确定选择哪个,请了解更多关于安装包的信息。

源代码发行版

cubicweb_api-0.15.0.tar.gz (27.5 kB 查看哈希值)

上传时间 源代码

构建发行版

cubicweb_api-0.15.0-py3-none-any.whl (28.8 kB 查看哈希值)

上传时间 Python 3

由以下组织支持