#ObjectScript

0 关注者 · 110 帖子

InterSystems ObjectScript 是一种脚本语言,可使用 InterSystems 数据平台的任何数据模型(对象、关系、键值、文档、全局变量/Global)处理数据,并在 InterSystems 数据平台上为服务器端应用程序开发业务逻辑。

文档

新增
文章 Lilian Huang · 四月 3 7m read

在我年轻的时候(具体有多年轻不在本文讨论范围之内),"token"这个词意味着乐趣。你看,每年我都会有几次机会去街机厅,和朋友们一起玩一些有趣的电子游戏。

如今,token意味着安全。JSON 网络令牌(JWT)身份验证已成为确保 REST API 安全的最流行标准之一。幸运的是,对于 IRIS 用户来说,我们有一种直接的方法来设置应用程序,使其受到这种方式的保护。然而,这种想法仍与我以前玩街机时的想法相似。如果你想玩游戏,就需要获取一些token!

设置

我们的首要任务是为 IRIS 做好准备,使用户能够获取token。首先,我们要在全系统范围内允许使用 JWT 身份验证。为此,我们将打开系统管理门户并登录。然后,我们将进入System Administration > Security > System Security > Authentication\Web Session选项。在同一区域,我们还可以授权其他身份验证替代方案,如 LDAP 和双因素身份验证。在变体列表的底部附近,我们会发现一个名为 "JWT Issuer Field "的字段,在这里我们必须键入一些值来标识token发行者。它可以是任何唯一的字符串,但通常是一个 URL 或域。这应该由应用程序接口和前端开发人员事先商定。您可以选择用户访问 API 时发送请求的 URL。在我的示例中,我将选择 www.myurl.

0
0 27
文章 Jeff Liu · 三月 17 1m read

InterSystems 常见问题

如果您尝试从顶级节点删除在子脚本级别映射的全局变量,您将收到一个<SLMSPAN>错误,并且它不会被删除。这是因为用于子脚本级别映射全局变量的kill命令不能跨映射使用。

// Suppose subscript-mapped globals exist in different databases, as shown below:
^TEST(A*~K*) -> database A
^TEST(L*~Z*) -> database B

// Trying to kill from the top level will result in a <SLMSPAN> error.
NAMESPACE>Kill ^TEST
<SLMSPAN> <- This error is output.

要只删除当前命名空间(数据库)中的全局,请使用以下命令:

NAMESPACE>Kill ^["^^."]TEST

在子脚本级别映射的全局变量必须移动到数据库并直接删除。

要切换到数据库,请使用以下命令:

zn "^^c:\intersystems\iris\mgr\user"
or
set $namespace="^^c:\intersystems\iris\mgr\user"

使用 $System.OBJ.

0
0 11
文章 Kelly Huang · 三月 17 10m read

在上一篇文章中,我们介绍了IrisOASTestGen——一个基于OpenAPI 2.0规范为InterSystems IRIS生成REST API测试代码的工具。该文章展示了如何使用OpenAPI Generator附带的默认模板来搭建测试用例。本文将聚焦于接下来的自然步骤**:自定义生成的测试代码**。通过使用Mustache模板扩展代码生成逻辑,我们可以表达更丰富的语义、实现CRUD感知测试,并创建更有意义的测试套件。本文的示例将修改IrisOASTestGen,为createPerson操作生成测试,包括遍历所有预期响应。这将展示如何使用OpenAPI规范中的自定义字段来驱动Mustache模板内的条件渲染。


OpenAPI扩展以支持CRUD操作

为了使代码生成支持CRUD操作,OpenAPI规范可以在vendorExtensions中包含自定义字段。这些自定义字段作为标志,Mustache模板可以检测到它们。

0
0 15