Skip to content(if available)orjump to list(if available)

A Deep Dive into OpenAPI

A Deep Dive into OpenAPI

15 comments

·June 19, 2025

dankobgd

So ai blog is now a "deep dive"

what-the-grump

Without a single line of code or example. Help I’m drowning.

deployhq

We ended up using this gem to implement OpenAPI: https://github.com/a-chacon/oas_rails, it was quite straightforward

waldekm

Another way to create an API spec is by using Dev Proxy: https://learn.microsoft.com/microsoft-cloud/dev/dev-proxy/ho.... It’s an easy way to get started from an existing API.

deployhq

Thanks for sharing it!

null

[deleted]

cyberax

Ugh. OpenAPI: just say "no". It's WAY too verbose, and there are usually many ways to shoot yourself in the foot.

Protobuf-based APIs are much nicer to work with. Either via gRPC, or via ConnectRPC.

ludovicianul

I would say being verbose is a positive thing. It removes the need of having additional (and usually out-of-sync) documentation. Plus all the tooling around it that allows you to keep public Dev documentation in sync with min effort.

resonious

Agreed. The extra stuff you get "for free" from the OpenAPI ecosystem is well worth the extra time it takes to write the spec.

If you don't want things like client/server generators and documentation, then sure it's not great

deployhq

We have used the gem: https://github.com/a-chacon/oas_rails, and we didn't need to write the specs, just comment the endpoints

cyberax

You still need to write a spec with protobufs. It's just that the spec is much more succinct and easy to read. And you can generate docs from it. E.g.:

https://cloud.google.com/appengine/docs/admin-api/reference/...

Do an experiment, take a Protobuf spec for some Google API and convert it into OpenAPI.

cyberax

> I would say being verbose is a positive thing.

No, it's not. A description of a single method can often span a couple of screens, and still not cover everything.

In addition, YAML is not easily composable, so you end up with files that are megabytes in size. This is completely useless for humans, unless you start using third-party tools to split the file into parts.

Protobuf-based protocols are also much better specified, and they don't have multiple ways to pass in data. Meanwhile, OpenAPI supports: headers, path queries, multiparts, forms with various encodings, uploads, etc.

andregit

so...yaml for the win? :))

deployhq

So, we ended up by using https://rubygems.org/gems/oas_rails which does the heavy work and generates almost everything. We only had to document the endpoints.

speed_spread

Not sure about the corporate advertising tone of the article, but I love OpenAPI. Having to work with various third party HTTP/JSON APIs all the time, I know I would rather deal with imperfect rigid generated client code than half-assed specs and shoddy examples. As a bonus, you can also generate your own server emulation for local testing, which is worth gold when dealing with real hardware.