携手创作,共同成长!这是我参与「掘金日新计划 · 9 月更文挑战」的第9天,点击查看活动详情
第十七章 源代码文件 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
编码的块数组包含在内。