HOW TO Django OpenAPI Docs with Versioning - django-rest-framework

Im trying to develop my first Django RESTFul API.
I have implemented some functionality and already got into Routing, Views, Serializers and so on.
Now i would like to setup some Documentation of everything i have currently implemented. So I have set up drf_yasg Swagger Documentation and added routes to the swagger.json and the swagger-ui.
BUT
The most important thing now: I need Api Versioning.
I have implemented two routes (v1 and v2) and the routing is fine.
But the documentation on the swagger site displays BOTH versions. and thats very very ugly. Im now struggeling for hours to find a solution how swagger finds its versions to display on diffrent pages but theres really not documentation about this behavior.
Can anyone help out?
I come from .NET world and there I can implement Swagger with ApiVersioning and Swagger automatically make a dropdown into the ui for me where i can choose, which documentation i w ant to read
Thanks and I hope we can find a solution.

Related

Host an ASP.NET Core MVC application in an Azure Function

I have tried searching for this online, but could not find an approach that works. There are a few helpful links to host a Web API but nothing related to a full fledged MVC app that consists of Controllers and Views. Azure currently does not have built in support for this. Hence, wondering if this is something doable.
It is possible to achieve this through the use of Custom Handlers. This blog post goes into further detail on how to create a custom handler. Do note that this feature is currently in preview so support is limited.

How to auto generate the yaml code for api documentation in swagger editor?

I want to design my web api using swagger, but the problem is I have to write all the yaml code myself, which in itself is a time consuming and tedious process. Can this process be automated?
I tried searching but did not anything useful.
Is auto-generation of yaml code for api design even possible before creating the api itself.
If yaml code can't be generated automatically then why use swagger for api design.
Any help will be appreciated. Thanks!
You can use swashbuckle instead of swagger (or alongside it, but i suggest just picking one)
https://github.com/domaindrivendev/Swashbuckle.AspNetCore#getting-started
They changed the docs since i've used it, however there's this tool you can use that scans your asp.net core project, looks at all controllers and routes and generates an opeapi document for you.
It can also generate client code and a bunch of other things.

RESTful API with CMS Made Simple

I have a client with a content-heavy site built in CMS Made Simple. The redesign requires a mostly AJAX interface, and I think a frontend framework like Backbone or Angular would be the way to go.
I want to avoid moving off CMS Made Simple, though (client is used to that interface, it will be annoying to migrate all the data).
I think if I could find or create a RESTful api for CMS Made Simple, I'd solve my problem. But after searching around online, I only found CGSocialApp module, which seems to provide a limited API for things like user management. I've also looked into other AJAX solutions for CMS Made Simple, and there don't seem to be good modules for it.
If there is no ready-made solution for me, how complex would building a RESTful API module be? I haven't built a RESTFUL api in a PHP framework before.
Thanks for any guidance!
So, there is no easy answer for this question, as the CMSMS doesn't have a build-in RESTful API.
I would go for one of the two solutions:
1. Output the content as hand made json.
In CMSMS, you really have a lot of control on the templates. You could change the default templates to output json content instead of HTML content. The only issue is that the CMSMS will still send an http content-type header, that you can try to ignore in the JS part.
To access the menu, just remove it from the main template and create an empty page who output the {menu}with a custom template that also build json content.
That's the quick and dirty solution, but it should be very accessible in terms of doing it.
2. Create a dedicated module.
As far as I know, there are no modules that expose the CMSMS in RESTFul format, but a module is really very easy to build. Well, you can try to build it yourself, with the help of the community. It don't really solve the current problem, but it's a hint.
I hope it shed some light on the problem.

ASP.NET Web-API Help-API Generator?

I am wondering if anyone can point me to which Web-Api Help Generator I should use.
I found this post but it is already a year old and seems to be outdated.
I think ApiExplorer is now Web API Help.
The post also talks about Swagger which from some demos looks a lot nicer and seems like you can do like post requests and such but I am unsure if it still in development as it's been like a year since the last update.
Anyone have any experience with either of them?
The "Web API Help Page" package (Microsoft.AspNet.WebApi.HelpPage) is built on top of ApiExplorer.
Web API Help Page generates documentation pages and adds them to your project.
ApiExplorer gives you a lower-level API that just gives you the API descriptions, which you can use to create documentation.
See: http://www.asp.net/web-api/overview/creating-web-apis/creating-api-help-pages
I haven't used Swagger. From the readme, it's also built on top of ApiExplorer.

Front End Frameworks for RESTful backend

I am developing a RESTful backend using Spring framework. All the services are accessible through HTTP request methods (GET, POST, PUT, DELETE).
Could you please tell me what can the best combination of frameworks for front end?
Is it best to use SpringMVC or some other framework like Backbone is good enough?
If I am using SpringMVC for REST backend and also SpringMVC for front end then won't it be extra work doing same things again first for backend then for front end?
And most important I am confused about how can do the session management using front end?
Any help will be appreciated!
If you are looking into to make a SPA (Single Page App) make sure that you take a look at AmpersandJS -> http://ampersandjs.com/
Templates
Since you said "server-side" GUI, maybe you are thinking more along the lines of a template engine for creating HTML? This isn't really restful, but can be MVC like if you are forwarding from your Controller classes.
But PLEASE keep in mind that it would be a very BAD idea to try and generate XML or JSON data for consumption by RESTful clients (ajax) with either of these. Just say no to JSON creation from a template engine!
JSP is pretty much the standard for Java EE at the moment, or is most widely used. All you need is a compliant server, such as Tomcat/Jetty.
http://www.oracle.com/technetwork/java/javaee/jsp/index.html
Thymeleaf It looks a lot cleaner than JSP, and has the added benefit of not allowing all the pitfalls that can happen with a JSP (and there are a lot).
http://www.thymeleaf.org/
JavaScript:
When you say you are creating a RESTful backend, most people would make the conclusion (and rightfully so) that you are trying to develop a JavaScript MVVM client/GUI.
Kendo UI has a complete set of GUI widgets and MVVM framework that is specifically designed to work with a RESTful backend. But it's a paid for API.
http://www.telerik.com/kendo-ui
YUI3 (Yahoo User Interface) has a variety of widgets as well, and I've seen a lot of jobs requesting this. It has the advantage of being free/OSS as well. Older version are deprecated.
https://github.com/yui/yui3/wiki
knockout.js has been my favorite for MVVM engines that I've actually had experience working with. And it's simple to learn, in my opinion.
http://knockoutjs.com/
Angular.js Also free/oss, and works well with other GUI APIs.
https://angularjs.org/
I would suggest you to consioder Sencha Ext JS for front-end, it is one of the best framework and will work with RestFul back-end.
this is a good question, but I don't think there is a server-side framework out there specifically built to use a REST server backend. I think you could use Spring-MVC / Spring-Boot to get a good headstart, but you might also want to look into Rails or other Ruby any other modern web framework technology.

Resources