Open API specs with more than one YAML file
Everyone that has ever documented a REST API knows what it feels like to write an entire YAML file complete with all those resources, paths, requests and schemas, but suddenly you find yourself keeping a file in which the last line has 5 digits length. Yes, it is painful.
Since the best applications are those we built to ourselves, I found myself on this exact same spot documenting an API at work and I searched a lot to not find one single viable solution to this problem, that's when our programmer instincts come in and we spend five times the time we were supposed to building a new tool for ourselves. That's exactly what I did and I want to share with you all a brand new tool written in Go to merge your YAML files on a single boss file to be used as your OpenAPI spec.
Introducing: GOpenAPI
GOpenAPI (Golang OpenAPI) is a tool that uses a file called dirs.json to scan files and directories (yes, whole directories worth of yaml) into one single swagger.yaml file at the end of execution.
You can check the source code here. Note that the repository is also a template that can be cloned and used as a draft to create your first OpenAPI spec with this tool (just make sure to keep gopenapi folder if you are not willing to install it via go install, otherwise it is completely removable)
How does it works (and do I get it working)
Simple, once you run gopenapi it reads the dirs.json file and starts to build an OpenAPI spec with all the files and folders declared in there. Note that the dirs.json will use files for unique keys such as info, servers and security as well as a key called template (which is just a blank OpenAPI yaml file)
Resources and keys that are hard to keep in a single file (such as paths, schemas and requests) can be stored in folders, and those can also be mentioned using the common #ref tag on OpenAPI, since all of them are going to the same file after merged.
This project also comes with an index.html that can be served statically and it also interacts with the Swagger UI official bundle that is contained inside the dist folder.
That's all folks
I hope this tool comes along for anybody who (just like me) searched a whole lot of reddits and github repositories just not to find the tool they were looking for. Well, now you have it and it is completely open source which means that, if you see any improvement or issue that can be resolved I won't think twice before collaborating with you to solve it. Also, I am pretty much naive on golang so it might have a lot to improve on this project, I will try to keep it up to date and constantly improve it (since I will also use it a lot now)
Thank you for reading and I hope this one comes handy to you the same way it did to me ;)
The above is the detailed content of Open API specs with more than one YAML file. For more information, please follow other related articles on the PHP Chinese website!

Hot AI Tools

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Undress AI Tool
Undress images for free

Clothoff.io
AI clothes remover

Video Face Swap
Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Article

Hot Tools

Notepad++7.3.1
Easy-to-use and free code editor

SublimeText3 Chinese version
Chinese version, very easy to use

Zend Studio 13.0.1
Powerful PHP integrated development environment

Dreamweaver CS6
Visual web development tools

SublimeText3 Mac version
God-level code editing software (SublimeText3)

Hot Topics











Golang is better than Python in terms of performance and scalability. 1) Golang's compilation-type characteristics and efficient concurrency model make it perform well in high concurrency scenarios. 2) Python, as an interpreted language, executes slowly, but can optimize performance through tools such as Cython.

Golang is better than C in concurrency, while C is better than Golang in raw speed. 1) Golang achieves efficient concurrency through goroutine and channel, which is suitable for handling a large number of concurrent tasks. 2)C Through compiler optimization and standard library, it provides high performance close to hardware, suitable for applications that require extreme optimization.

Goisidealforbeginnersandsuitableforcloudandnetworkservicesduetoitssimplicity,efficiency,andconcurrencyfeatures.1)InstallGofromtheofficialwebsiteandverifywith'goversion'.2)Createandrunyourfirstprogramwith'gorunhello.go'.3)Exploreconcurrencyusinggorout

Golang is suitable for rapid development and concurrent scenarios, and C is suitable for scenarios where extreme performance and low-level control are required. 1) Golang improves performance through garbage collection and concurrency mechanisms, and is suitable for high-concurrency Web service development. 2) C achieves the ultimate performance through manual memory management and compiler optimization, and is suitable for embedded system development.

Golang and Python each have their own advantages: Golang is suitable for high performance and concurrent programming, while Python is suitable for data science and web development. Golang is known for its concurrency model and efficient performance, while Python is known for its concise syntax and rich library ecosystem.

The performance differences between Golang and C are mainly reflected in memory management, compilation optimization and runtime efficiency. 1) Golang's garbage collection mechanism is convenient but may affect performance, 2) C's manual memory management and compiler optimization are more efficient in recursive computing.

Golang and C each have their own advantages in performance competitions: 1) Golang is suitable for high concurrency and rapid development, and 2) C provides higher performance and fine-grained control. The selection should be based on project requirements and team technology stack.

Golangisidealforbuildingscalablesystemsduetoitsefficiencyandconcurrency,whilePythonexcelsinquickscriptinganddataanalysisduetoitssimplicityandvastecosystem.Golang'sdesignencouragesclean,readablecodeanditsgoroutinesenableefficientconcurrentoperations,t
