Я использовал ключевое слово readOnly
в своих схемах, и я только что понял, что просто создаю свою собственную семантику. Сейчас я очищаю кучу своих проектов и пытаюсь подтвердить, что я использовал эту аннотацию, как и было задумано. проверка правильности spe c - это то, на чем я основываю этот вопрос, но я хотел бы знать больше примеров использования сценария ios.
Позвольте мне привести три примера. В этом первом примере я хочу сказать, что весь ресурс доступен только для чтения. Ничто не может быть мутировал на любом уровне.
{
"type": "object",
"readOnly": true,
"properties": {
"name": {
"type": "string",
},
"members": {
"type": "object",
"properties": {
"member1": { "type" : "string" },
"member2": { "type" : "string" }
}
}
}
}
Я не думаю, что это слишком спорный. Но изначально моя собственная ментальная модель заключалась в том, что readOnly
на верхнем уровне означало, что вы не можете заменить этот ресурс новым ресурсом. Сервер предотвратит это. Но внутренние члены были все еще изменчивы. Поэтому я добавил readOnly
в подсхему name
и подсхему каждого члена. Я думаю, что удаление всех из них было правильным. (Моя ментальная модель, возможно, была основана на том, как я интерпретирую константные переменные в JavaScript. Если моя константная переменная является объектом, я не могу изменить значение переменной, но я могу изменить ее члены или даже добавить к ней члены .)
Во втором примере я полностью исключаю readOnly
из схемы. Так что это не слишком противоречива, чтобы считать, что в среднем ничего изменчиво в ресурсе.
{
"type": "object",
"properties": {
"name": {
"type": "string",
},
"members": {
"type": "object",
"properties": {
"member1": { "type" : "string" },
"member2": { "type" : "string" }
}
}
}
}
В третьем примере, я хочу, чтобы смешивать и сочетать
{
"type": "object",
"properties": {
"name": {
"type": "string",
"readOnly": true
},
"members": {
"type": "object",
"properties": {
"member1": { "type" : "string", "readOnly": true },
"member2": { "type" : "string", "readOnly": true },
"member3": { "type" : "string"},
"member4": { "type" : "string"}
}
}
}
}
В данном примере имя, member1 и member2 являются неизменяемыми. member3 и member4 могут быть изменены.
Так что вопрос в том, есть ли что-то неправильное в моей интерпретации readOnly
?