json-schema-ref
v0.0.4
Published
解析json-schema中包含的$ref字段,最终合并为一个整体
Downloads
17
Readme
json-schema-ref
解析JSON-Schema中包含的 $ref
关键字,并最终合并成一个完整的模块。
- 支持内部引用,如
#/definitions/internal
- 支持外部HTTP引用,如
http://taobao.com/schema.json
- 支持嵌套,如ref中的schema还包含ref的情况
- 支持River规范,若$ref中指向的schema为river格式,则使用
schema.response
安装
npm install json-schema-ref --save
使用
var Parser = require( 'json-schema-ref' );
var schema = {
type: 'object',
properties: {
info: {
$ref: 'http://taobao.com/schema.json'
}
}
};
Parser( schema, function( result ){
console.log( result );
// --> result.refs: { 'http://taobao.com/schema.json': { error: null, schema: .. 对应的schema内容, path: '#/properties/info/$ref' }
// --> result.schema: 合并后的schema
});
options
Parser
接收额外的参数:
Parser( schema, options, next );
参数如下:
refs
:Object
,给定预置的$ref
对应的schemarefHandle
:Function
,接受每个遇到的$ref
对应的值作为参数,必须返回一个字符串,将作为$ref
计算时的值
使用refs
参数的例子:
var options = {
refs: {
'http://taobao.com/schema.json': {
type: 'string',
description: 'internal schema'
}
}
};
var schema = {
type: 'object',
properties: {
external: {
$ref: 'http://taobao.com/schema.json'
}
}
};
Parser( schema, options, function( result ){
console.log( result.schema );
/* output:
{
type: 'object',
properties: {
external: {
type: 'string',
description: 'internal schema'
}
}
}
*/
});
使用refHandle
的例子:
var options = {
refHandle: function( value ){
if( value === 'external' ){
return 'http://localhost:9999/json/external.json'
}
else {
return value;
}
}
};
var schema = {
type: 'object',
properties: {
external: {
$ref: "external"
}
}
};
Parser( schema, options, function( result ){
/* 计算结果中使用 `http://localhost:9999/json/external.json` 代替 `external` 来进行取值 */
});
测试
需要先开启本地服务:node test/server.js
,然后执行npm test