Я нуб в json. Определяя формат результата моего RESTful API (а именно JSON), я чувствовал, что будет проще документировать его как мою собственную схему схема JSON. При написании у меня возникло несколько вопросов:
- В моем результате JSON, как мне указать URI для схемы, которую он подтверждает? --edit-- используется атрибут
$schema
? - Существуют ли какие-либо соглашения/рекомендации по управлению версиями схемы JSON? Есть ли какие-то атрибуты, которые я должен/могу определить в своей схеме как атрибуты? Я вижу, что сама схема JSON не имеет определенной версии, кроме как в ее URI, указанном как значение ключа
$schema
. - Могу ли я разбить одну БОЛЬШУЮ схему JSON на несколько меньших и включить одну в другую? Подобно #include в C++, затем ссылайтесь на несколько схем в JSON, который я отправил пользователю в качестве результата.
- Могу ли я определить пользовательское значение для ключа «тип»? Например. Я хотел бы повторно использовать определение «дата» следующим образом:
[игнорируйте эту строку, это нужно для того, чтобы форматирование работало для следующего json..]
{
"date":{
"type":"object",
"properties":{
"month":{
"type":"integer",
"minimum":1,
"maximum":12
},
"year":{
"type":"integer",
"minimum":0
}
}
},
"personInfo":{
"type":"object",
"properties":{
"name":{
"type":"string"
},
"dateOfBirth":{
"type":"date"
}
}
},
"student":{
"type":"object",
"properties":{
"id":{
"type":"personInfo"
},
"pass_out_year":{
"type":"date"
}
}
}
}
вместо предоставления свойств «даты» в нескольких местах, например:
{
"personInfo":{
"type":"object",
"properties":{
"name":{
"type":"string"
},
"dateOfBirth":{
"type":"object",
"properties":{
"month":{
"type":"integer",
"minimum":1,
"maximum":12
},
"year":{
"type":"integer",
"minimum":0
}
}
}
}
},
"student":{
"type":"object",
"properties":{
"id":{
"type":"personInfo"
},
"pass_out_year":{
"type":"object",
"properties":{
"month":{
"type":"integer",
"minimum":1,
"maximum":12
},
"year":{
"type":"integer",
"minimum":0
}
}
}
}
}
}
согласно 5.1 введите в спецификации, это невозможно, но это похоже на такой простой вариант использования!