文章
姚 鑫 · 八月 4 阅读大约需 3 分钟

第十七章 源代码文件 REST API 教程(二)

第十七章 源代码文件 REST API 教程(二)

获取在命名空间中定义的源代码文件

要获取有关命名空间中源代码文件的信息:
- 首先,使用 GetDocNames 方法获取文件的名称。
- 然后用GetDoc 方法获取一个文件的内容,也可以用GetDocs 方法获取多个文件的内容。
- 如果要提高应用程序的网络效率,可以保留源代码文件的名称和内容的本地缓存,并使用 GetModifiedDocNames 方法仅获取内容发生变化的源代码文件的名称或使用带有 If-None-Match HTTP 标头的 GetDoc 方法。

GetDocNames 方法返回映射到命名空间的所有数据库中的所有源代码文件的名称。

{
  "status": {
    "errors": [],
    "summary": ""
  },
  "console": [],
  "result": {
    "content": [
      {
        "name": "%Api.DocDB.cls",
        "cat": "CLS",
        "ts": "2016-08-03 20:01:42.000",
        "upd": true,
        "db": "IRISLIB",
        "gen": false
      },
      ...
      {
        "name": "EnsProfile.mac",
        "cat": "RTN",
        "ts": "2003-09-19 13:53:31.000",
        "upd": true,
        "db": "INVENTORYR",
        "gen": false
      },
      ...
      {
        "name": "xyz.mac",
        "cat": "RTN",
        "ts": "2016-08-11 15:05:02.167",
        "upd": false,
        "db": "INVENTORYR",
        "gen": false
      }
    ]
  }
}

以下 GetDoc 调用返回 xyz.mac 文件的内容:

http://localhost:52773/api/atelier/v1/INVENTORY/doc/xyz.mac

此调用返回:

{
  "status": {
    "errors": [],
    "summary": ""
  },
  "console": [],
  "result": {
    "name": "xyz.mac",
    "db": "INVENTORYR",
    "ts": "2016-09-14 14:10:16.540",
    "upd": false,
    "cat": "RTN",
    "status": "",
    "enc": false,
    "flags": 0,
    "content": [
      "ROUTINE xyz",
      "xyz ;",
      "   w \"hello\""
    ]
  }
}

在命名空间中创建新文件或更新现有文件

要在命名空间中创建新文件或更新现有文件,请使用 PutDoc 方法。例如,以下 REST 调用在 INVENTORY 命名空间中创建一个新的 xyz.mac 源代码文件,或者,如果 xyz.mac 文件存在,则此调用将文件的原始定义替换为新定义。如果要更新新文件,则必须指定 HTTP 标头 If-None-Match 以标识文件的当前版本,或指定 ?ignoreConflict=1 URL 参数以绕过版本检查。有关详细信息,请参阅参考部分中的 PutDoc

PUT http://localhost:52773/api/atelier/v1/INVENTORY/doc/xyz.mac

应该指定 Content-Type application/json 和以下 JSON 消息:

{
 "enc": false,
 "content": [
   "ROUTINE xyz",
   "xyz ;",
   "   w \"hello\""
   ]
}

该调用返回以下 JSON 消息。它显示源代码文件已在 INVENTORYR 数据库中创建,该数据库是 INVENTORY 命名空间中例程的默认数据库。

{
  "status": {
    "errors": [],
    "summary": ""
  },
  "console": [],
  "result": {
    "name": "xyz.mac",
    "db": "INVENTORYR",
    "ts": "2016-09-14 14:10:16.540",
    "upd": false,
    "cat": "RTN",
    "status": "",
    "enc": false,
    "flags": 0,
    "content": []
  }
}

如果要更新或创建二进制文件,请为 enc 指定一个真值,并将二进制内容作为二进制值的 base64 编码的块数组包含在内。

0
0 5
讨论 (0)1
登录或注册以继续