MissingRefError-使用$ ref的JSON模式远程REST Web服务枚举无法解析对远程json的引用

时间:2019-03-06 17:04:18

标签: json forms rest jsonschema ref

我正在使用 Angular6-json-schema-form 从JSON模式生成Angular表单。

我正在尝试使用引用“ $ ref ”从远程REST Web服务填充模式的枚举,但是我遇到了MissingRefError。

这是我的模式:

{
"$id": "http://www.mocky.io/v2/5c7ff2e833000000338484c2.json#",
"title": "A rather large form",
"type": "object",
"properties": {
  "noenum": { "$ref": "#/definitions/largeEnum" }
}
}

链接内的JSON具有以下内容:

{ 
"definitions": {
"largeEnum": {
  "type": "string",
  "enum": [
    "option #0",
    "option #1",
    "option #2",
    "option #3",
    "option #4"
  ]
}
}
}

如果我这样在本地进行操作,它将起作用:

{
"definitions": {
  "largeEnum": {
    "type": "string",
    "enum": [
        "option #0",
        "option #1",
        "option #2",
        "option #3",
        "option #4"
    ]
  },
  "title": "A rather large form",
  "type": "object",
  "properties": {
    "noenum": {"$ref": "#/definitions/largeEnum" }
   }
}

请查看屏幕截图中的错误

Error From Console

我需要使其从托管的json文件或REST端点远程运行。

1 个答案:

答案 0 :(得分:0)

从您的评论看来,您认为$ id解析了一个远程引用。不过那是不正确的。 $id 定义了可用来引用当前模式的方式。

相反,您需要使用"$ref"关键字来引用远程模式。

(验证程序是主动检索远程URL,还是要求您自己包含该模式的内容,取决于验证程序的实现。)

您可以这样做:

{
    "title": "A rather large form",
    "type": "object",
    "properties": {
        "noenum": {
            "$ref": "http://www.mocky.io/v2/5c7ff2e833000000338484c2.json#/definitions/largeEnum"
        }
    }
}