openapi-code-generator
typespec | openapi-code-generator | |
---|---|---|
8 | 5 | |
3,064 | 12 | |
26.7% | - | |
9.7 | 8.8 | |
2 days ago | 4 days ago | |
TypeScript | TypeScript | |
MIT License | MIT License |
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
typespec
-
Write OpenAPI with TypeSpec
It does not exist, but it will be worked on fairly soon. You can track progress on GitHub [1]. It will be as you suggest - a one time conversion, after which you can iterate. We have this workflow for inside Azure, but the converter is Azure-specific (e.g. converts to TypeSpec that uses our extensive Azure-specific component library). It will take a bit to generalize.
[1]: https://github.com/microsoft/typespec/issues/3038
- TypeSpec
-
Write SDK “base” in Rust, wrap in other languages?
Afaik there's nothing that's widely used and of which I'd say I prefer it. But I'm having hopes for https://github.com/microsoft/typespec (former cadl). The reason being that yaml/JSON specs get huge very quickly, OpenAPI has to fight with restrictions of yaml/JSON ($refs, splitting up into files, oneOf, etc.) and tooling is ok but not great.
-
Ask HN: Why is there no specification for Command Line Interfaces?
You've touched on some use cases I've thought about and led me to ask the question.
I also recently saw Microsoft take a higher level approach with CADL/Typespec: https://microsoft.github.io/typespec/ which could be cool if it reaches wide adoption.
- Cadl
- Cadl: a language to describe APIs and generate schemas
- Cadl: A language to describe APIs and generate schemas
-
Cadl: a new IDL
This one just crossed my feed today: Cadl, "... a language for describing cloud service APIs and generating other API description languages, client and service code, documentation, and other assets."
openapi-code-generator
-
TypeSpec: A New Language for API-Centric Development
Whilst it's not as expressive/flexible as typespec, and in my experience it's not always well supported by tooling, you can do $ref's across files in openapi specifications.
Eg: https://github.com/mnahkies/openapi-code-generator/blob/main...
-
Show HN: Pre-alpha tool for analyzing spdx SBOMs generated by GitHub
I've become interested in SBOM recently, and found there were great tools like https://dependencytrack.org/ for CycloneDX SBOMs, but all I have is SPDX SBOMs generated by GitHub.
I decided to have a go at writing my own dependency track esque tool aiming to integrate with the APIs GitHub provides.
It's pretty limited in functionality so far, but can give a high level summary of the types of licenses your repository dependencies use, and let you drill down into potentially problematic ones.
Written in NextJS + mui + sqlite, and using another project of mine to generate most of the API boilerplate/glue (https://github.com/mnahkies/openapi-code-generator)
-
Show HN: Konfig – SDKs for APIs to write and maintain less API integration
Congratulations on launching, you have some interesting ideas in there.
Using a LLM to generate missing operation ids isn't something I've tried, instead I simply combine http method plus path segments which at least guarantees uniqueness [1]. I do a similar thing for extracting and naming inline schemas based on the operation and media types [2].
How do you prevent naming collisions? And do you find the resulting names to be significantly better than a deterministic approached like I described?
I'll definitely checkout the curated specifications - always useful to get more high quality (and hopefully varied) specifications to test my code generator with, and the lint rules is a great idea - I've had to explain what patterns lend themselves well to code generation many times.
I'm on mobile so may have missed it, but looking at one of your typescript examples I couldn't see any runtime response body validation, is this something you're thinking about?
- [1] https://github.com/mnahkies/openapi-code-generator/blob/main...
-
Write OpenAPI with TypeSpec
Yeah I'm also on the schema first side of the debate.
I think for me it comes down to a few key points:
- APIs are forever, the choice of language/framework is an implementation detail
- Constraining yourself to what can be represented in the specification is better than generating a specification from implementation that may not be capable of expressing the full details
- When working with diverse languages it provides a common ground/language for discussing API changes. Eg: if you have java backend, kotlin android, swift iOS, react/whatever web you can bring everyone together with the spec
- Subjective, but a good spec will include a bunch of documentation and examples that tend to create a lot of noise in the code. I personally prefer to keep this in the spec and the implementation smaller
I think the main counterpoint to this is that you can generate the spec and then take that and change your mind if you later change language/framework etc - it's not a one-way door.
My biggest bug bear is that regardless of spec first or implementation first, you should have something you write once and generate the rest of the glue from (eg: docs, client sdks). Writing each piece manually/independently always leads to drift and bugs.
(I'm working on my own little openapi -> typescript code generator over here https://github.com/mnahkies/openapi-code-generator - eventually plan to support more than typescript, and adding typespec support is something I'm currently considering)
What are some alternatives?
guardrail - Principled code generation from OpenAPI specifications
libninja - Generate client libraries that are featureful, human, well-documented, and async based on OpenAPI specs
core-crypto - MLS/Proteus multiplexer abstraction with encrypted persistent storage in Rust
rutie - “The Tie Between Ruby and Rust.”
connexion - Connexion is a modern Python web framework that makes spec-first and api-first development easy.
wasmer - 🚀 The leading Wasm Runtime supporting WASIX, WASI and Emscripten
vcr - Record your test suite's HTTP interactions and replay them during future test runs for fast, deterministic, accurate tests.
cli-guidelines - A guide to help you write better command-line programs, taking traditional UNIX principles and updating them for the modern day.
uniffi-rs - a multi-language bindings generator for rust
nballerina - Ballerina compiler that generates native executables.
jsii - jsii allows code in any language to naturally interact with JavaScript classes. It is the technology that enables the AWS Cloud Development Kit to deliver polyglot libraries from a single codebase!
cobra - A Commander for modern Go CLI interactions