Clients und Server-Stubs mittels Swagger Codegen erzeugen

Mit Swagger gibt es seit einigen Jahren eine Möglichkeit REST-API sinnvoll zu dokumentieren und zu generieren. Aus einer YAML-Datei, welche die Beschreibung der API enthält kann mit dem Swagger Code Generator (kurz Swagger Codegen) eine entsprechende Client-Bibliothek oder ein Server-Stub erzeugt werden. Eine solche minimale YAML-Datei könnte wie folgt aussehen:

swagger: '2.0'
info:
  description: "API"
  version: "2018.04"
  title: "API"
host: "api.example.com"
basePath: "/v1"
schemes: 
- "https"
paths:
  /tree:
    get:
      produces: 
      - "application/json"
      summary: Returns the document tree
      tags:
      - "Document tree"
      description: Lorem Ipsum dolor sit amet
      responses:
        200:
          description: OK

In dieser Datei wird eine Ressource mit dem Namen tree und für diese eine Get-Methode definiert. Um daraus nun die Client-Bibliotheken bzw. Server-Stubs zu generieren muss der Swagger Codegen über Git bezogen, anschließend kompiliert und paketiert werden:

https://github.com/swagger-api/swagger-codegen.git
cd swagger-codegen
mvn clean package

Zur Erzeugung eines PHP-Server-Stubs mit dem Slim-Framework kann der Swagger Codegen anschließend wie folgt genutzt werden:

java -jar modules/swagger-codegen-cli/target/swagger-codegen-cli.jar generate -i api.yaml   -l slim -o folder/slim

Eine Client-Bibliothek wird auf dem gleichen Weg erzeugt:

java -jar modules/swagger-codegen-cli/target/swagger-codegen-cli.jar generate -i api.yaml   -l javascript -o folder/javascript

In diesem Fall wird eine JavaScript-Client-Bibliothek erzeugt. Die verfügbaren Sprachen bzw. Frameworks für die Clients und Server-Stubs erzeugt werden können, können mit dem Befehl:

java -jar modules/swagger-codegen-cli/target/swagger-codegen-cli.jar langs

angezeigt werden. Die Ausgabe spezifiziert alle vorhandenen Generatoren:

Available languages: [ada, ada-server, akka-scala, android, apache2, apex, aspnetcore, bash, csharp, clojure, cwiki, cpprest, csharp-dotnet2, dart, elixir, elm, eiffel, erlang-client, erlang-server, finch, flash, python-flask, go, go-server, groovy, haskell-http-client, haskell, jmeter, jaxrs-cxf-client, jaxrs-cxf, java, inflector, jaxrs-cxf-cdi, jaxrs-spec, jaxrs, msf4j, java-pkmst, java-play-framework, jaxrs-resteasy-eap, jaxrs-resteasy, javascript, javascript-closure-angular, java-vertx, kotlin, lua, lumen, nancyfx, nodejs-server, objc, perl, php, powershell, pistache-server, python, qt5cpp, r, rails5, restbed, ruby, rust, rust-server, scala, scala-gatling, scala-lagom-server, scalatra, scalaz, php-silex, sinatra, slim, spring, dynamic-html, html2, html, swagger, swagger-yaml, swift4, swift3, swift, php-symfony, tizen, typescript-aurelia, typescript-angular, typescript-inversify, typescript-angularjs, typescript-fetch, typescript-jquery, typescript-node, undertow, ze-ph, kotlin-server]

Lizenziert ist der Swagger Codegen unter der Apache Licence in der Version 2 und somit freie Software.

VNC unter Mac OS X nutzen

Wenn man VNC unter Mac OS X nutzen möchte, benötigt man einen entsprechenden VNC-Client. Neben verschiedensten Clients welche für Mac OS X existierten wird ein Client meist vergessen – der eingebaute VNC-Client von Mac OS X.

Über Safari kann der VNC-Client gestartet werden

Über Safari kann der VNC-Client gestartet werden

Möchte man diesen Client nutzen muss Safari geöffnet werden und dort eine URL mit dem Pseudoprotokoll VNC eingegeben werden. So wird z.B. bei Eingabe der URL:

vnc://192.168.1.42

der VNC Client geöffnet und eine Verbindung zu der IP-Adresse aufgebaut. Der eingebaute Client beherrscht dabei das ABC eines VNC-Clients unter anderem die eingebaute Skalierung.

Swagger – REST API goes Framework

Ein REST-API von Hand entwickelt, benötigt eine Dokumentation, ein entsprechenden Server und eventuell einige Clients als Referenz. Einfacher wird es mit einem Framework wie Swagger. Unter Zuhilfenahme der Beschreibungssprache YAML können mit Hilfe des Frameworks REST-APIs, Dokumentation, Server und Clients generiert werden.

Der Swagger Editor

Der Swagger Editor

Doch Swagger versteht sich nicht nur als Framework, sondern auch als Spezifikation. Begonnen wurde mit der Entwicklung bereits im 2010; die Swagger Specification trägt seit Anfang Januar 2012 offiziell den Namen OpenAPI Specification und beschreibt eine maschinenlesbare Interfacedefinitionen einer REST-API. Ähnliches wurde unter anderem schon mit WSDL und WADL versucht – alles Konzepte bzw. Beschreibungsprachen welche an ihren eigenen Limitationen gescheitert sind und wenn überhaupt nur noch sporadisch genutzt werden.

Betreut und weiterentwickelt wird die Spezifikation nun von der Open API Initiative, zu der namenhafte Firmen wie Google, PayPal, IBM, Atlassian und Microsoft gehören. Die Spezifikation als solche ist freie Software und auf GitHub zu finden. Sie ist unter der Apache Lizenz lizenziert. Aktuell ist die Spezifikation in der Version 2.0 veröffentlicht.

Auf der offiziellen Webseite von Swagger findet sich ein Editor, mit welchem APIs definiert werden können und anschließend exportiert werden können. Der Editor kann dabei Server unter anderem in den Sprachen bzw. für die Framworks Haskel, Jax-RS, Node.js, Python, Rails und PHP erzeugen. Bei den Clients ist die Auswahl noch größer. Diese können in C#, HTML, Dart, Go, Groovy, Java, Javascript, Objective C, Perl, PHP, Ruby, Scala, Swift und vielen weiteren Sprachen erzeugt werden.

Neben dem Editor kann für die Erzeugung von Clients auch der Swagger Codegen genutzt werden. Dabei handelt es sich um eine Java-Anwendung um die Clients lokal auf dem eigenen Rechner zu erzeugen. Der Editor und viele weitere Tools rund um Swagger sind ebenfalls auf GitHub zu finden. – auch diese sind freie Software, welche unter der Apache Lizenz stehen.

GitUp – freier Git-Client für Mac OS X

Für Mac OS X gibt es einige freie Git-Clients. Das Problem an den meisten dieser Clients ist das sie nicht mehr weiterentwickelt werden. Ein ziemlich aktueller und aktiv weiterentwickelter Client ist GitUp. Der Client beherscht dabei die nötige Grundfunktionalität, kann aber auch mit Spezialitäten wie Submodulen umgehen. Besonders hervorzuheben ist Map-Ansicht, in welcher man durch den Graph der Commits und Branches navigieren kann.

GitUp in der Map-Ansicht

GitUp in der Map-Ansicht

Lizenziert ist GitUp unter der GPL3 und damit freie Software – der Quelltext ist auf GitHub zu finden. Bezogen werden kann GitUp über die offizielle Projektseite unter gitup.co.

Hama 2in1 Wireless-LAN Adapter im Client-Modus betreiben

Von Hama gab es vor einiger Zeit einen 2in1 Wireless-LAN Adapter. Dieser Adapter kann dabei im Client-Modus betrieben werden. Das bedeutet das mit Hilfe des Adapters kabelgebundene Geräte in ein WLAN gehängt werden können. Bei besagtem Adapter von HAMA gibt es allerdings ein Problem – das Webinterface ist unbrauchbar. So bleibt die Weboberfläche z.B. nach der Durchführung des Konfigurationsassistenten dauerhaft unerreichbar. Mit ein paar Kniffen kann der Adapter allerdings doch konfiguriert werden.

Der Hama Adapter

Der Hama Adapter

Im ersten Schritt sollte der Adapter auf seine Grundeinstellungen zurückgesetzt werden. Dazu muss der Reset/WPS Knopf über 10 Sekunden lang gedrückt werden. Der Knopf sollte erst dann losgelassen werden wenn die PWR-LED anfängt zu blinken. Für die anschließende Konfiguration muss der Adapter über die gelbe Buchse mit dem Rechner verbunden werden. Auf dem Adapter läuft ein DHCP Server – der Adapter selbst bzw. die Weboberfläche ist unter der Adresse http://192.168.19.1 zu erreichen. Die Standardanmeldedaten sind dabei admin und 1234. Über die Weboberfläche sollte dem Adapter eine IP-Adresse (im LAN Bereich der Konfiguration) aus dem eigenen Netz zugewiesen werden und der eingebaute DHCP-Server deaktiviert werden. Bei der nächsten Meldung ist darauf zu achten das CONTINUE ausgewählt wird. Bei der anderen Auswahlmöglichkeit startet das Gerät neu, was im Moment noch nicht gewünscht ist.

Die Sicherheitseinstellungen werden vorgenommen

Die Sicherheitseinstellungen werden vorgenommen

Nun kann der Client Modus unter Wireless -> Basic Settings konfiguriert werden. Hier wird als Mode der Punkt Station (Infrastructure) eingestellt und sich über Site Survey mit dem entsprechenden Netz verbunden. Danach wird das ganze mit Apply und anschließend mit CONTINUE bestätigt. Im nächsten Schritt müssen die Security Settings angesteuert werden. Dort wird das passende WLAN-Passwort eingestellt. Nun kann der Adapter neugestartet werden und im Client-Modus betrieben werden.