2017-01-09 42 views
0

Я использую Anypoint Studio 6.2 с Mule 3.8.1, и я добавил схему raml и JSON, которая не показывает ошибок в api-workbench, но показывает неправильные ошибки Json в Anypoint Студия.RAML-файл бросает неверный ответ схемы Json в Anypoint Studio

Я обнаружил, что если я удалю требуемое поле из всех моих схем Json, связанных с рампой (т. Е. Рампой, чертами и типами), тогда все будет работать. Есть ли способ исправить это?

Необходимый синтаксис я использую:

"required": [ 
    "Organisation", 
    "Address" 
    ], 

Обновлено

и я также видим org.mule.common.metadata.parser.json.SchemaException: java.net.MalformedURLException: no protocol: где $ исх не может быть решена при использовании схемы JSON для создать тип метаданных для использования в Dataweave:

{ 
    "id": "http://localhost:8000/schemas/products.json#", 
    "$schema": "http://json-schema.org/draft-04/schema#", 
    "title": "Products", 
    "type": "object", 
    "properties": { 
     "Products": { 
      "$ref": "common/text.json" 
     } 
    }, 
    "additionalProperties": false 
} 

Thanks

+0

Может быть, он поддерживает только v3 схемы. Попробуйте использовать put «required»: «true» в каждом поле (это формат схемы v3) – Pedro

ответ

1

Я делаю то же самое, поэтому он определенно поддерживается в Studio. Не видя весь ваш файл схемы JSON, я должен угадать причину, и я полагаю, что вы либо не укажете версию схемы JSON, либо указали неправильный (должно быть как минимум v4, а не v3 для этого). Следующие работы для меня:

{ 
    "$schema": "http://json-schema.org/draft-04/schema", 
    "type": "object", 
    "properties": { 
    "Organisation": { "type": "string" }, 
    "Address": { "type": "string" } 
    }, 
    "required": [ "Organisation", "Address" ] 
} 
+0

Я обнаружил, что, когда я следую совету Педро, все проблемы устранены, и если я вернусь обратно к использованию требуемого массива, тогда ошибки return, так что он выглядит как совместимый на данный момент с v3. Есть ли что-то, что мне нужно сделать, чтобы сделать это до последней версии? – user3165854

+0

Вы добавили «$ schema»: «http://json-schema.org/draft-04/schema», к вашей схеме json, как предложил Брэд? – Pedro

+0

Да, в соответствии с комментарием Педро и моим ответом вам нужно указать схему 4. Как я уже сказал, это определенно работает в студии для проектов, над которыми я работаю. –

0

Что касается нового дополнения - $ исх - мы также используем это, и это, кажется, решен правильно APIKit (т.е. сообщения корректно проверены), однако я не использую эти схемы для создания метаданных Dataweave, поэтому я не могу гарантировать, что он будет вести себя одинаково (я надеюсь, что он использует тот же парсер, но не может точно сказать).

Common.json:

{ 
    "$schema": "http://json-schema.org/draft-04/schema", 
    "definitions": { 
     "emailAddress": { 
      "description": "Basic RegEx for an email address", 
      "type": ["string","null"], 
      "pattern": "^[a-zA-Z0-9'._%+-][email protected][a-zA-Z0-9.-]+\\.[a-zA-Z]{2,}$" 
     } 
    } 
} 

Sample.json:

{ 
    "$schema": "http://json-schema.org/draft-04/schema", 
    "type": "object", 
    "properties": { 
     "email": { 
      "$ref": "common.json#/definitions/emailAddress" 
     } 
    } 
}