|
|
|
|
|
by hugecannon
3181 days ago
|
|
Slightly off-topic: Are there any tools which can validate an OpenAPI Specification against a running instance of the API it describes? I've played around with apiaryio/dredd, but was hoping to find something more targeted towards OpenAPI/Swagger. |
|
I have own experience only with "server-side" of Swagger validation. Some time ago, I had to build a simple stateless "gateway" style Node.js backend for a customer webapp. It took API requests, checked authorization and then fetched data from a couple of non-public services, and combined them to a reply JSON for consumption by the frontend webapp.
I wanted to keep the backend really simple and have guarantees it was always returning good data, so I could focus on the more complex frontend code. I thought a "specification-driven" approach would be suitable, where I first described my intended backend REST API with Swagger, and then wrote the Node.js code that implemented that REST API specification. Usually, things are done exactly vice-versa: you write the backend code, and then generate the spec that describes your implementation.
I think I ended up using the swagger-express-validator library to a) validate incoming JSON/form POST requests, b) automatically select the correct Node.js controller that should serve the request, and c) validate that the HTTP/JSON replies the controller eventually returned were correct (per the Swagger spec).
https://github.com/gargol/swagger-express-validator
It worked quite well. The Swagger served as kind of a "index" of the backend, similar to a C header file, and if you did an "oops" and returned bad data you would immediately get a fatal error during development. I caught multiple corner cases where the upstream APIs were returning unexpected data that would have normally been only discovered by monkey testing the UI.
This library allows choosing the NodeJS/Express controller by a Swagger spec, but I think I ended-up rolling my own:
https://github.com/swagger-api/swagger-node