drogonframework / drogon

Drogon: A C++14/17/20 based HTTP web application framework running on Linux/macOS/Unix/Windows
MIT License
11.44k stars 1.1k forks source link

OpenAPI (Swagger)-compliant REST API self-documenting feature (C++ to OAS JSON spec file generator) #988

Closed smihaila closed 3 years ago

smihaila commented 3 years ago

Is your feature request related to a problem? Please describe. It feels so frustrating that, of of all C++ based Web Application Frameworks out there, only two seem to provide built-in support for an OpenAPI (Swagger) self-documenting feature:

Describe the solution you'd like It would be great if Drogon could offer a built-in OpenAPI / Swagger-compliant self-documenting feature. Besides other two C++ Web Application Frameworks (Oat++ and Pistache) and which I personally dislike, there is a myriad of other Web Application Frameworks for several other programming languages, offering such support:

The feature described herein falls under a "Code-first (then Annotate)" WebAPI documentation mindset. Which is opposite to a "Design-first" mindset.

Describe alternatives you've considered I'm currently trying Oat++ with its oatpp-swagger module. But I don't like Oat++ as a C++ Web Application Framework, to begin with. I'm also trying a Doxygen + Sphinx + Breathe pipeline, hoping to somehow be able to add some JavaDoc / Doxygen-style comments and which could be then auto-translated to OpenAPI / Swagger-compliant JSON spec file. Probably via sphinxcontrib-httpdomain plus sphinx-swagger. But the sphinx-swagger seems to be rather old and no longer maintained since July 1st 2017 (last version being 0.4.0).

Additional context See FastAPI ( https://fastapi.tiangolo.com/features/#automatic-docs ) for an intuitive illustration of what the envisioned feature is. See also these Oatpp + Oatpp-swagger tutorials: https://medium.com/oatpp/c-oatpp-web-service-with-swagger-ui-and-auto-documented-endpoints-1d4bb7b82c21 https://dzone.com/articles/c-restful-web-service-with-swagger-ui-and-auto-doc

Thank you.

marty1885 commented 3 years ago

PR #923 is working on the exact feature.

smihaila commented 3 years ago

That's AWESOME - the timing couldn't have been better, and Drogon rocks! Thank you.

rbugajewski commented 3 years ago

Thanks for the feature request. I’m gonna close this issue, as we already have a work in progress PR open covering this exact topic.

feliwir commented 8 months ago

Why is this closed? #923 was never implemented / finished

aryankarim commented 7 months ago

@Mis1eader-dev now this would be nice if they implement it.

Mis1eader-dev commented 7 months ago

@Mis1eader-dev now this would be nice if they implement it.

Yes I agree, personally I don't have hands-on experience with Swagger. I could start working on a PR when I get a good grasp on Swagger.

vanarp0915 commented 6 months ago

Is their any way we can upload a static swagger files in drogon. How we do it on nodeJS