Versionen im Vergleich

Schlüssel

  • Diese Zeile wurde hinzugefügt.
  • Diese Zeile wurde entfernt.
  • Formatierung wurde geändert.
Auszug
hiddentrue

Nuclos REST-APIs: OpenAPI Generator, Java-Client, src-conf-rest, jersey2, Regeln, 4.2023.29, Adapter.

globe with meridians Sprache: Deutsch · English

hammer and wrench REST-APIs

Externe REST-Services anbinden – Java-Client aus OpenAPI-Spezifikation generieren und in Regeln nutzen.

Status
colourPurple
titleHow-to
Status
colourBlue
titleEntwickler
Status
colourGreen
titleStand: Jul 2026
Status
colourGrey
titlegilt fuer Nuclos 4.2026.x

Panel
bgColor#F4F5F7

Auf dieser Seite

Inhalt
maxLevel2

...

minLevel2

Nuclos

...

kann aus einer OpenAPI-Spezifikation

...

mit dem OpenAPI Generator

...

einen Java-Client

...

erzeugen, um externe REST-Services

...

anzubinden. Dieser Client

...

ist in

...

Regeln verwendbar (ab Nuclos 4.2023.29

...

).

Einrichtung

...

Die Servicespezifikation unter Administration

...

REST APIs

...

registrieren. Nuclos generiert daraufhin Klassen unter <NUCLOS-HOME>/data/codegenerator/src-conf-rest/

...

, die in Regeln

...

nutzbar sind.

FeldBedeutung

...

Name

...

eindeutig;

...

dient u.

...

​a. als Name

...

der Adapter-Klasse

...

(z.​B. example.rest.NuclosRESTAdapter

...

).
Haupt-Package

...

Package des invoker (Default <nuclet>.invoker).
API-Package

...

Package des api (Default <nuclet>.api).
Modell-Package

...

Package der models (Default <nuclet>.models).
HTTP-Client-

...

BibliothekDefault jersey2.
Date-BibliothekDefault java8.

...

BigDecimal als String

...

vermeidet Genauigkeitsverluste.
Serializable

...

Models implementieren

...

Serializable

...

.
DateiOpenAPI-Spezifikation als JSON oder YAML

...

.

...

Info
titleGenerator-Doku

Weitere Optionen des Generators: openapi-generator.tech.

Verwandte Seiten

gear Code Beispiel für SSL REST Zugriff ohne Zertifikat


SSL.

Öffnen →

Mglw. weitere Abhängigkeiten

Bei der Verwendung einer anderen HTTP-Client-Bibliothek oder Date-Bibliothek als den Standard, werden u.U. weitere Bibliotheken benötigt, die als serverseitige Extension zur Verfügung gestellt werden müssen.

Verwendung

Die Erzeugung der Client-Klassen erfolgt ohne Abhängigkeit zu einem Endpunkt. Daher muss vor dem Aufruf der API-Methoden ein ApiClient für den anzusprechenden Endpunkt erzeugt werden. Zur Vereinfachung bietet Nuclos hier eine Adapter-Klasse (bspw. example.rest.NuclosRESTAdapter ) an, die mit dem Endpunkt initialisiert werden kann.
Der Aufruf der API-Methoden erfolgt über die Api-Klassen (s. API-Package). Diese können auch über die Adapter-Klasse bezogen werden, bspw. durch den Aufruf von adapter.getNucloSystemApi().

Nachfolgend findet sich eine Beispiel-Implementation zum Aufruf mehrerer API-Methoden (GET und POST ) mit vorherigem Login und Authentifizierung über ein Session-Cookie.

Codeblock
languagejava
themeEclipse
linenumberstrue
String restAPIsBasePath = ParameterProvider.getNucletParameter(TestOtherNucletParameter.RestAPIsBasePath); if (StringUtils.isBlank(restAPIsBasePath) || "null".equals(restAPIsBasePath)) { restAPIsBasePath = "http://localhost/nuclos-war"; } final NuclosRESTAdapter nuclosRESTAdapter = NuclosRESTAdapter.newInstance(restAPIsBasePath); try { StringBuilder sb = new StringBuilder(); final Serverstatus serverstatus = nuclosRESTAdapter.getNuclosSystemApi().restServerstatusGet(); sb.append(new ObjectMapper().writeValueAsString(serverstatus)); sb.append("\n"); //LOGIN final LoginParams loginParams = new LoginParams(); loginParams.setUsername("nuclos"); loginParams.setPassword(""); final LoginInfo loginInfo = nuclosRESTAdapter.getNuclosAuthenticationApi().login1(loginParams); final String sessionId = loginInfo.getSessionId(); nuclosRESTAdapter.getApiClient().addDefaultCookie("JSESSIONID", sessionId); DebugSql debugSQL = new DebugSql(); debugSQL.setDebugSQL("false"); nuclosRESTAdapter.getNuclosMaintenanceApi().setDebugSQL(debugSQL); debugSQL = nuclosRESTAdapter.getNuclosMaintenanceApi().getDebugSQL(); sb.append(new ObjectMapper().writeValueAsString(debugSQL)); sb.append("\n"); debugSQL = new DebugSql(); debugSQL.setDebugSQL("true"); nuclosRESTAdapter.getNuclosMaintenanceApi().setDebugSQL(debugSQL); debugSQL = nuclosRESTAdapter.getNuclosMaintenanceApi().getDebugSQL(); sb.append(new ObjectMapper().writeValueAsString(debugSQL)); sb.append("\n"); testBO.setResult(sb.toString()); } catch (ApiException | JsonProcessingException e) { throw new BusinessException(e); }