Tsoa: Integrate with `routing-controllers`

Created on 7 Jul 2016  路  6Comments  路  Source: lukeautry/tsoa

routing-controllers is a extensive decorator library for Express and TypeScript. It, however, does not have support for Swagger ( yet ;) ).

Rather than re-invent the wheel it would be nice to have adapters for use with other libraries like this. I've spoken to @pleerock and he's interested in this effort too.

Additionally, there is class-validators which is a decorator pattern for property validation that might be worth thinking about too.

question

Most helpful comment

Frankly, I think @pleerock has a far more robust library for this - really the only thing it's missing (at least, from having looked at it) is swagger spec generation. With swagger spec generation on top, it's basically exactly what I'd want when starting to build out an API.

Since most of the work for swagger generation is parsing out the metadata and converting it to a spec, 90% of the logic is specific to the implementation, e.g. the conventions established in https://github.com/pleerock/routing-controllers. I might take a stab and open a pull request over there with spec generation, as I think it has more value coming as a single package, or at least an extension (e.g. routing-controllers-swagger).

All 6 comments

sounds good, would be great if we have such ability to generate docs right from the code

Frankly, I think @pleerock has a far more robust library for this - really the only thing it's missing (at least, from having looked at it) is swagger spec generation. With swagger spec generation on top, it's basically exactly what I'd want when starting to build out an API.

Since most of the work for swagger generation is parsing out the metadata and converting it to a spec, 90% of the logic is specific to the implementation, e.g. the conventions established in https://github.com/pleerock/routing-controllers. I might take a stab and open a pull request over there with spec generation, as I think it has more value coming as a single package, or at least an extension (e.g. routing-controllers-swagger).

@lukeautry I'm all for this, let me know how I can help!

@lukeautry sounds very promising let me know too if there is something we need to do together to make this swagger spec generation part of routing-controllers

Per discussion with @lukeautry...

yeah, i took a stab at it - the way that pleerock does metadata generation is different, it's using runtime reflection and currently object serialization for ts emitMetadata is not quite where it needs to be (that's why i had to actually run everything through the compiler)

i think with ts 2.0 object serialization is (probably?) finished so all swagger spec can be generated at runtime so, probably in the next couple months - for now i'm refining my solution as i like the simplicity of it

yeah, like basically having compiled typescript with decorators be able to output return types/argument type metadata e.g. return type is { id: string }, that metadata is written out to the compiled js somehow

Any feedback @pleerock ?

Closing for now.

Was this page helpful?
0 / 5 - 0 ratings