2017-02-02 1 views
1

Json Schema와 작동하는 인터페이스를 작성하는 데 도움이되고 해당 스키마를 기반으로 인터페이스 생성에 대한 질문이 있습니다. 내부 사용자 용과 외부 사용자 용의 두 가지 디스플레이 유형이 있습니다. 둘 다 동일한 데이터를 처리하지만 외부 사용자는 내부 사용자보다 필드의 더 작은 하위 집합을보아야합니다.다중 레이아웃에서 json 스키마 사용

{ 
    "$schema": "http://json-schema.org/draft-04/schema#", 
    "description": "", 
    "type": "object", 
    "required": [ 
     "id", 
     "deceased" 
    ], 
    "properties": { 
     "id": { "type": "string" }, 
     "account": { 
      "type": "object", 
      "required": [ 
       "name" 
      ], 
      "properties": { 
       "id": { "type": "number" }, 
       "name": { "type": "string" }, 
       "website": { 
        "anyOf": [ 
         { 
          "type": "string", 
          "format": "uri" 
         }, 
         { 
          "type": "string", 
          "maxLength": 0 
         } 
        ] 
       }, 
       "email": { 
        "anyOf": [ 
         { 
          "type": "string", 
          "format": "email" 
         }, 
         { 
          "type": "string", 
          "maxLength": 0 
         } 
        ] 
       }, 
       "address": { 
        "type": "object", 
        "properties": { 
         "address1": { "type": "string" }, 
         "address2": { "type": "string" }, 
         "city": { "type": "string" }, 
         "state": { "type": "string" }, 
         "postalCode": { "type": "string" }, 
         "country": { "type": "string" } 
        } 
       }, 
       "phoneNumber": { 
        "anyOf": [ 
         { 
          "type": "string", 
          "format": "phone" 
         }, 
         { 
          "type": "string", 
          "maxLength": 0 
         } 
        ] 
       }, 
       "faxNumber": { 
        "anyOf": [ 
         { 
          "type": "string", 
          "format": "phone" 
         }, 
         { 
          "type": "string", 
          "maxLength": 0 
         } 
        ] 
       }, 
       "type": { "type": "string" } 
      } 
     }, 
     "deceased": { 
      "type": "object", 
      "required": [ 
       "fullName" 
      ], 
      "properties": { 
       "fullName": { "type": "string" }, 
       "prefix": { "type": "string" }, 
       "firstName": { "type": "string" }, 
       "middleName": { "type": "string" }, 
       "nickName": { "type": "string" }, 
       "lastName1": { "type": "string" }, 
       "lastName2": { "type": "string" }, 
       "maidenName": { "type": "string" }, 
       "suffix": { "type": "string" } 
      } 
     }, 
     "description": { "type": "string" }, 
     "photos": { 
      "type": "array", 
      "items": { "type": "string" } 
     } 
    } 
} 

내부 사용자가 모든 필드에 액세스 할 수있을 것입니다,하지만 외부 사용자가 읽기/계정 필드를 쓸 수 없게한다 : 예를 들어

, 여기에 하나의 스키마, 그것은 사망 기사를 정의 .

외부 사용자를위한 두 번째 스키마를 만들어야합니까, 아니면 각 필드마다 다른 표시 수준이나 공개/비공개를 나타내는 방법이 있습니까?

+0

당신이 JSON 스키마 –

+0

실제 그래서 내 유일한에 적용 할 수있는 접근 수정이 없습니다 옵션은 매우 유사한 두 번째 스키마를 만드는 것입니다. 괜찮 으면, 그 경우에, 나는 그 방향으로 나가기 전에 확실히 할 필요가있다. – Lisa

+0

인터페이스 생성은 JSON 스키마 스펙의 일부가 아니므로 UI ​​생성에 사용하는 라이브러리가 지원하는 모든 액세스 수정자를 사용할 수 있습니다. – esp

답변

1

스키마에 정의 된 필드로 액세스를 제한 할 수는 없지만 "공개"필드를 정의하는 스키마 파일과 제한된 필드와 제한된 필드를 정의하는 스키마 파일을 각각 2 개씩 가질 수 있습니다.

그래서

공공 schema.json :

{ 
    "properties" : { 
     "id" : ... 
    } 
} 

제한-schema.json :

{ 
    "allOf" : [ 
     { 
      "$ref" : "./public-schema.json" 
     }, 
     { 
      "properties" : { 
       "account": ... 
      } 
     } 
    ] 

} 
+0

액세스가 범위를 벗어나므로 정확하지는 않습니다. – esp