kill-circular
这个包在官方的基础上解除了循环引用。
why?
swagger-parser 官方使用的是 json-schema-parser 来解析的协议。在 json-schema-parser 的 lib/dereference.js
中有如下内容
line 58
if $Ref dereferenced = ; circular = dereferencedcircular; objkey = dereferencedvalue;
修改后
if $Ref dereferenced = ; circular = dereferencedcircular; objkey = circular ? _ : dereferencedvalue;
注意观察最后一行,官方的写法是如果是循环引用,是自己引用自己,obj[key] === dereferenced.value.items
恒成立。
我的修改,是拷贝了一份副本,避免了重复引用。这个是为了方便后续的 mock 和 api 在 html 中的渲染,大家酌情使用
#############
以下是官方说明
##############
Swagger 2.0 and OpenAPI 3.0 parser/validator
Features
- Parses Swagger specs in JSON or YAML format
- Validates against the Swagger 2.0 schema or OpenAPI 3.0 Schema
- Resolves all
$ref
pointers, including external files and URLs - Can bundle all your Swagger files into a single file that only has internal
$ref
pointers - Can dereference all
$ref
pointers, giving you a normal JavaScript object that's easy to work with - Tested in Node.js and all modern web browsers on Mac, Windows, and Linux
- Tested on over 1,000 real-world APIs from Google, Instagram, Spotify, etc.
- Supports circular references, nested references, back-references, and cross-references
- Maintains object reference equality —
$ref
pointers to the same value always resolve to the same object instance
Related Projects
Example
SwaggerParser;
Or use Promises syntax instead. The following example is the same as above:
SwaggerParser ;
For more detailed examples, please see the API Documentation
Installation
Node
Install using npm:
npm install swagger-parser
Then require it in your code:
var SwaggerParser = ;
Web Browsers
Reference swagger-parser.js
or swagger-parser.min.js
in your HTML:
API Documentation
Full API documentation is available right here
Contributing
I welcome any contributions, enhancements, and bug-fixes. File an issue on GitHub and submit a pull request.
Building/Testing
To build/test the project locally on your computer:
-
Clone this repo
git clone https://github.com/APIDevTools/swagger-parser.git
-
Install dependencies
npm install
-
Run the build script
npm run build
-
Run the tests
npm test
-
Start the local web server
npm start
(then browse to http://localhost:8080/test/)
License
Swagger Parser is 100% free and open-source, under the MIT license. Use it however you want.
Big Thanks To
Thanks to these awesome companies for their support of Open Source developers ❤