This is a TypeScript (node.js) OpenAPI generator for REST services using Express.
npm start
Connect your browser to http://localhost:3000/example/hello and see the result.
Look through src/api and src/routes directories to get a feel for what's
automatically generated.
This project requires ts-node to be installed.
You should install openapi-generator so that model files can be generated.
To generate model and API files from your OpenAPI script, you need to determine a
base name for the classes that are generated. The "base name" is the name of the
overall project, like "MyProject" or "Testing". The generated files in both the
api and route directories will be provided as convenience classes to register
all routers and all API delegates.
When using the command tseo-gen without any arguments, a list of help will be
generated.
By default, API and Routes will be generated in the src/api and src/routes
directories, respectively. The first argument should be the name of the OpenAPI spec
YAML file you have created.
For instance, if Example were the base name, ExampleController.ts would be
generated in src/api, and ExampleRouter.ts would be generated in src/routes.
To set up a server wiring in express, the following is an example snipet of source
code that will do that, given the basename of Example above:
import {ExampleController} from "../src/api";
import {ExampleRouter} from "../src/routes/ExampleRouter";
(() => {
const express = require('express');
const app = express();
const bodyParser = require('body-parser');
app.use(bodyParser.json());
const port = 3000;
const controller: ExampleController = new ExampleController();
ExampleRouter.registerAll(app, controller);
app.listen(port, () => {
console.log(`Accepting connections on: http://localhost:${port}/`);
});
})();This will generate code that will implement a new Express server with the example
ExampleController implementing all of the delegates for each service provided by
ExampleRouter.
Each Delegate class in the ExampleController can be overridden using your own
implementation of the provided classes. You must implement and override the
implementations of each delegate, otherwise, your code will be rendered useless, as
each class will simply throw an exception when called.
bin/server.ts ... this implements an example of the service using example/hello
as a URL that can be called. It is an asynchronous function that is implemented by
the delegate, and can be (a)synchronous as required.
Any model files referenced by the openapi/main.yml spec should be generated using
the typescript-node generator provided by openapi-generator. These API spec
files are used by the delegates when a DTO object is defined.