6 ms·
Hey all ! I worked on this with Sagar a couple weeks back. The tl;dr of this is that it generates a (in my heavily-biased opinion) relatively clean SDK given an
by ThomasRooney 4y ago
Hey all ! I worked on this with Sagar a couple weeks back. The tl;dr of this is that it generates a (in my heavily-biased opinion) relatively clean SDK given an OpenAPI schema, similar to what a human would write. We’d used several other OpenAPI SDK generators but found their result to be a bit too big (and not tree-shakable); so spent a bit of effort trying to work out a way to compile-in the OpenAPI spec into a thin (but statically typed) wrapping around axios — very similar to an SDK coded manually.
Here's a few examples:
1. The Petstore API (an tiny example): https://easysdk.xyz/sdk/petstore.json-7bb7c53e017c0f7432f7bd2614767cf2fa545393223fff1e5488cb2cd23364fd https://easysdk.xyz/sdk/petstore.json-7bb7c53e017c0f7432f7bd...
2. Our own API: https://easysdk.xyz/sdk/openapi.yaml-ee89154ee9cf9a77f9fb07dc1882c7d37ea59f0c9faaa72ca8f8117bfed7a591 https://easysdk.xyz/sdk/openapi.yaml-ee89154ee9cf9a77f9fb07d...
3. The LOTR API: http://easysdk.xyz/sdk/lotr.yaml-f1ec4cde1ca7839dca2685e283e3a2476a56600efe80b83108fad582f8636614 http://easysdk.xyz/sdk/lotr.yaml-f1ec4cde1ca7839dca2685e283e...
The generator works by:
1. Dereferencing an OpenAPI specification into something with inline types. (Ideally we'd handle type references rather than inlining them, but haven't got there yet)
2. Walking the type-graph, and mapping it to Operations (a combination of Path and Method).
3. Using the Typescript SDK, generating the SDK via creating AST nodes whilst walking the type graph.
4. Trying to compile in:
1. Path Parameters as ES6 Template strings (e.g. `"/v1/apis/{apiID}/api_endpoints"` => `/v1/apis/${props.apiID}/api_endpoints`)
2. Query params into axios parameters
3. Body params as an additional argument to the SDK
It's not perfect, but we've used this to help run our own unit tests (and have a few customers trying it out too)! Happy to answer any questions