RAD Server has built in support for the OpenAPI (Swagger) REST endpoint documentation format. It provides both YAML and JSON definitions of the endpoints. RAD Server is the REST server framework that ships with RAD Studio (Delphi and C++Builder). A single site and multisite license come with RAD Studio Enterprise and Architect respectively. The open source Swagger Code Gen project can take your Swagger definition file and generate clients for your REST endpoints in a wide variety of languages and frameworks which should work on most platforms. This allows you to access RAD Server from pretty much any language or framework. Want to connect your Flutter client to RAD Server? Have at it using the dart client. Want to connect your fancy Python AI project to RAD Server? Have at it using the python client. What to connect your legacy Android app to RAD Server? There is an Android client for that. Want to connect from PHP (the language that runs 80% of the web) to RAD Server? There is a PHP client for that. There is an online Swagger Editor where you can upload your definition file and generate the clients. I took the default RAD Server Swagger JSON file (available from /api/apidoc.json) which is only the built in endpoints for RAD Server and plugged it into the online Swagger Editor. Once you add your own custom resource modules to RAD Server with your own endpoints it would contain your endpoints as well. You can find out more about documenting your RAD Server endpoints in the documentation. I generated a RAD Server REST client for each of their client options and uploaded that client to Github. The host was set to the default localhost:8080 search (which is what RAD Server’s debug server runs on by default).
In addition to REST Clients is also generates HTML documentation and Atlassian Confluence markup. The Confluence markup is in the cwiki project and the different HTML documentations are in dynamic-html, html, and html2 projects. The html2 project is probably the nicest of the three as it also contains sample usage code with each endpoint that corresponds to the other Swagger clients (curl, Java, Android, Obj-C, Javascript, C#, PHP, Perl, and Python). The online Swagger Editor itself uses the live documentation Swagger UI project which you can also download and use with your Swagger YAML/JSON files.
What was somewhat disappointing about the Swagger CodeGen clients so far is that of the three clients that I tried (bash, csharp, and powershell) all of them require extra work to get running. They have various syntax errors out of the box that have to be fixed before they will compile. This was not unique to the RAD Server JSON definition either as I tried the Swagger CodeGen with other Swagger JSON files with similar results. Additionally, I’m not so sure how clean this generated code is as it seems to have a lot of boilerplate code for what are relatively simple endpoints. The cross platform FireMonkey client code (for Android, IOS, OSX, Windows, and Linux) generated by Auto Tables for RAD Server feels much easier to read and simpler to use. At the same time starting out with a pre-generated client in the programming language or framework you need really goes a long way towards making RAD Server accessible and eases the integration process.
Here is a list of the REST clients/projects I generated for RAD Server:
- ada
- akka-scala
- android
- apex
- bash
- clojure
- cpprest (generator errored out)
- csharp
- csharp-dotnet2
- cwiki
- dart
- dart-jaguar
- dynamic-html
- eiffel
- elixir
- elm
- erlang-client
- flash
- go
- groovy
- haskell-http-client
- html
- html2
- java
- javascript (generator errored out)
- javascript-closure-angular
- jaxrs-cxf-client
- jmeter
- kotlin
- lua
- objc
- perl
- php
- powershell
- python
- qt5cpp
- r
- ruby
- rust
- scala
- scala-gatling
- scalaz
- swift
- swift3
- swift4
- tizen
- typescript-angular
- typescript-angularjs
- typescript-aurelia
- typescript-fetch
- typescript-inversify
- typescript-jquery
- typescript-node
Head over and check out all 50+ clients in many languages for RAD Server over on GitHub.