Home Backend Development Golang Open API specs with more than one YAML file

Open API specs with more than one YAML file

Sep 26, 2024 am 06:10 AM

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!

Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn

Hot AI Tools

Undresser.AI Undress

Undresser.AI Undress

AI-powered app for creating realistic nude photos

AI Clothes Remover

AI Clothes Remover

Online AI tool for removing clothes from photos.

Undress AI Tool

Undress AI Tool

Undress images for free

Clothoff.io

Clothoff.io

AI clothes remover

Video Face Swap

Video Face Swap

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

Hot Article

Roblox: Bubble Gum Simulator Infinity - How To Get And Use Royal Keys
4 weeks ago By 尊渡假赌尊渡假赌尊渡假赌
Nordhold: Fusion System, Explained
4 weeks ago By 尊渡假赌尊渡假赌尊渡假赌
Mandragora: Whispers Of The Witch Tree - How To Unlock The Grappling Hook
3 weeks ago By 尊渡假赌尊渡假赌尊渡假赌

Hot Tools

Notepad++7.3.1

Notepad++7.3.1

Easy-to-use and free code editor

SublimeText3 Chinese version

SublimeText3 Chinese version

Chinese version, very easy to use

Zend Studio 13.0.1

Zend Studio 13.0.1

Powerful PHP integrated development environment

Dreamweaver CS6

Dreamweaver CS6

Visual web development tools

SublimeText3 Mac version

SublimeText3 Mac version

God-level code editing software (SublimeText3)

Hot Topics

Java Tutorial
1673
14
PHP Tutorial
1278
29
C# Tutorial
1257
24
Golang vs. Python: Performance and Scalability Golang vs. Python: Performance and Scalability Apr 19, 2025 am 12:18 AM

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 and C  : Concurrency vs. Raw Speed Golang and C : Concurrency vs. Raw Speed Apr 21, 2025 am 12:16 AM

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.

Getting Started with Go: A Beginner's Guide Getting Started with Go: A Beginner's Guide Apr 26, 2025 am 12:21 AM

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

Golang vs. C  : Performance and Speed Comparison Golang vs. C : Performance and Speed Comparison Apr 21, 2025 am 12:13 AM

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 vs. Python: Key Differences and Similarities Golang vs. Python: Key Differences and Similarities Apr 17, 2025 am 12:15 AM

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.

Golang and C  : The Trade-offs in Performance Golang and C : The Trade-offs in Performance Apr 17, 2025 am 12:18 AM

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.

The Performance Race: Golang vs. C The Performance Race: Golang vs. C Apr 16, 2025 am 12:07 AM

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.

Golang vs. Python: The Pros and Cons Golang vs. Python: The Pros and Cons Apr 21, 2025 am 12:17 AM

Golangisidealforbuildingscalablesystemsduetoitsefficiencyandconcurrency,whilePythonexcelsinquickscriptinganddataanalysisduetoitssimplicityandvastecosystem.Golang'sdesignencouragesclean,readablecodeanditsgoroutinesenableefficientconcurrentoperations,t

See all articles