SlideShare ist ein Scribd-Unternehmen logo
1 von 21
Swagger – REST APIs im Griff
Expertenkreis Java, 21.06.2018, GEDOPLAN
Dominik Mathmann, GEDOPLAN GmbH
Swagger?
The World's Most Popular API Tooling
https://swagger.io/
by SmartBear
Toolset für REST-Webservice
Dokumentation
Code Generierung
Testen
2
gedoplan.
de
3
gedoplan.
de
4
gedoplan.
de
OpenAPI
json/yaml
Die Idee
5
gedoplan.
de
.java
Bottom-up
Top-down
OpenAPI
json/yaml
OpenAPI
json/yaml
Doc
Client
Server
Doc
Client
Core-Tools
6
gedoplan.
de
swagger-core
Integration in Java Anwendungen
swagger-ui
Visualisierung und Interaktion
swagger-editor
Design und Interaktion
swagger-codegen
Generierung von Clients
swagger-core, JAX-RS
7
gedoplan.
de
Java / JAX-RS Integration für Swagger
Verwendung von Annotationen
zur Definition der Schnittstellen
zur Dokumentation
Generierung von Open API Files
per JAX-RS Resource
per Maven Plugin
Bottom-Up Vorgehen
swagger-core, JAX-RS
8
gedoplan.
de
<dependency>
<groupId>io.swagger</groupId>
<artifactId>swagger-jaxrs</artifactId>
<version>1.5.18</version>
</dependency>
@ApplicationPath("/webresources")
public class ApplicationConfig extends Application {
public ApplicationConfig() {
BeanConfig beanConfig = new BeanConfig();
beanConfig.setVersion("1.0.0");
beanConfig.setTitle("Expertenkreis Demo");
beanConfig.setHost("localhost:8080");
beanConfig.setBasePath("/ek-swagger-1.0-SNAPSHOT/webresources");
beanConfig.setResourcePackage("de.gedoplan.ek.swagger.resource");
beanConfig.setScan(true);
}
swagger-core, Annotations
9
gedoplan.
de
@Api , Swagger Resource markieren
@ApiOperation, Funktionsbeschreibung
@ApiParam, Parameterbeschreibung
@ApiResponse, Return Beschreibung
…
Alternativ: swagger-maven-plugin
10
gedoplan.
de
Generierung Open API File über Maven Plugin
Konfigurierbar
Ressource-Pfad
Projektinformationen
Ausgabeformat
automatische Weiterverarbeitung möglich
z.B. zur Code-Generierung
<groupId>com.github.kongchen</groupId>
<artifactId>swagger-maven-plugin</artifactId>
swagger-ui
11
gedoplan.
de
Web-Anwendung
als Online-Version
als Download zum selber hosten
grafische Aufbereitung der API
Interaktion mit der API
swagger-ui
12
gedoplan.
de
swagger-editor
13
gedoplan.
de
Web-Editor zum Beschreiben Erstellen von Open API Files
Web-Anwendung
als Online-Version
als Download zum selber hosten
Top-Down Vorgehen
swagger-editor
14
gedoplan.
de
swagger-codegen
15
gedoplan.
de
Generierung von Clients
Anwendung integriert in swagger-editor
über Java CLI
java -jar swagger-codegen-cli-2.3.1.jar
generate -i swagger.json -l typescript-angular
swagger-codegen
16
gedoplan.
de
Client
swagger-codegen
17
gedoplan.
de
Server
swagger-codegen, typescript-angular
18
gedoplan.
de
public class ContactPerson {
private Integer id;
private String firstname;
private String lastname;
private String mail;
export interface ContactPerson {
id?: number;
firstname?: string;
lastname?: string;
mail?: string;
@Path("cperson")
@Produces(MediaType.APPLICATION_JSON)
@Consumes(MediaType.APPLICATION_JSON)
public class ContactPersonResource {
@GET
public List<ContactPerson>
getContactPersons() {...}
@Injectable()
export class ContactPersonService {
public getContactPersons(…) :
Observable<Array<ContactPerson>> {
…
return
this.httpClient.get
(`${this.basePath}/cperson`);
}
Individualisierung
19
gedoplan.
de
Java > Open API
@SwaggerDefinition, @Extension
ReaderListener
Open API > codegen
Code-Template Anpassung (mustache.js)
Anpassung Java-Anwendung (OpenSource)
Go Swagger?
20
gedoplan.
de
Pro
geringer Einführungsaufwand
enge Bindung zwischen Dokumentation und Code
umfassendes Tooling (Auswertung, Testen)
Generierung von Code
Contra
enge Bindung an Open API / Tooling
Beschränkungen durch Generatoren
ggf. Anpassung der API Generierung
ggf. unzureichende Implementierung von Clients
Demo
21
gedoplan.
de
GEDOPLAN, Expertenkreis Java
https://gedoplan-it-consulting.de/expertenkreis-java/
Demos
https://github.com/GEDOPLAN/expertenkreis-swagger

Weitere ähnliche Inhalte

Ähnlich wie Swagger - Rest APIs im Griff

Gewinnung von OPEN SOURCE Techniken für junge Unternehmen
Gewinnung von OPEN SOURCE Techniken für junge UnternehmenGewinnung von OPEN SOURCE Techniken für junge Unternehmen
Gewinnung von OPEN SOURCE Techniken für junge UnternehmenBjoern Reinhold
 
Automatischer Build mit Maven - OPITZ CONSULTING - Stefan Scheidt
Automatischer Build mit Maven - OPITZ CONSULTING - Stefan ScheidtAutomatischer Build mit Maven - OPITZ CONSULTING - Stefan Scheidt
Automatischer Build mit Maven - OPITZ CONSULTING - Stefan ScheidtOPITZ CONSULTING Deutschland
 
Apache DeviceMap - Mobile Geräteerkennung für Java EE - JavaLand 2014
Apache DeviceMap - Mobile Geräteerkennung für Java EE - JavaLand 2014Apache DeviceMap - Mobile Geräteerkennung für Java EE - JavaLand 2014
Apache DeviceMap - Mobile Geräteerkennung für Java EE - JavaLand 2014Werner Keil
 
Informatik Seminar Groovy Und Grails
Informatik Seminar Groovy Und GrailsInformatik Seminar Groovy Und Grails
Informatik Seminar Groovy Und Grailsschmichri
 
LeanIX Swagger REST API @ Open Source Konferenz FrosCon, Sankt Augustin
LeanIX Swagger REST API @ Open Source Konferenz FrosCon, Sankt AugustinLeanIX Swagger REST API @ Open Source Konferenz FrosCon, Sankt Augustin
LeanIX Swagger REST API @ Open Source Konferenz FrosCon, Sankt AugustinLeanIX GmbH
 
Automatischer Build mit Maven
Automatischer Build mit MavenAutomatischer Build mit Maven
Automatischer Build mit MavenStefan Scheidt
 
Ist Gradle auch für die APEX-Projekte?
Ist Gradle auch für die APEX-Projekte?Ist Gradle auch für die APEX-Projekte?
Ist Gradle auch für die APEX-Projekte?MT AG
 
Von Maven zu Gradle in 45 Minuten
Von Maven zu Gradle in 45 MinutenVon Maven zu Gradle in 45 Minuten
Von Maven zu Gradle in 45 MinutenQAware GmbH
 
Article - JDK 8 im Fokus der Entwickler
Article - JDK 8 im Fokus der EntwicklerArticle - JDK 8 im Fokus der Entwickler
Article - JDK 8 im Fokus der EntwicklerWolfgang Weigend
 
Testing einer Angular App
Testing einer Angular AppTesting einer Angular App
Testing einer Angular AppFlorian Bader
 
MongoDB Munich 2012: Spring Data MongoDB
MongoDB Munich 2012: Spring Data MongoDBMongoDB Munich 2012: Spring Data MongoDB
MongoDB Munich 2012: Spring Data MongoDBTobias Trelle
 
Api Platform: the ultimate API Platform
Api Platform: the ultimate API PlatformApi Platform: the ultimate API Platform
Api Platform: the ultimate API PlatformStefan Adolf
 
Java EE Microservices ohne Server
Java EE Microservices ohne ServerJava EE Microservices ohne Server
Java EE Microservices ohne Servergedoplan
 
Collaboration - dann klappt’s auch mit dem ‘Nachbarn’ - mff 2009
Collaboration - dann klappt’s auch mit dem ‘Nachbarn’ - mff 2009Collaboration - dann klappt’s auch mit dem ‘Nachbarn’ - mff 2009
Collaboration - dann klappt’s auch mit dem ‘Nachbarn’ - mff 2009Wolfgang Kraus
 
FMK2019 FileMaker Data API mit Node.js nutzen by Adam Augustin
FMK2019 FileMaker Data API mit Node.js nutzen by Adam AugustinFMK2019 FileMaker Data API mit Node.js nutzen by Adam Augustin
FMK2019 FileMaker Data API mit Node.js nutzen by Adam AugustinVerein FM Konferenz
 
2008 - Gewinnung von OPEN SOURCE Techniken für junge Unternehmen
2008 - Gewinnung von OPEN SOURCE Techniken für junge Unternehmen2008 - Gewinnung von OPEN SOURCE Techniken für junge Unternehmen
2008 - Gewinnung von OPEN SOURCE Techniken für junge UnternehmenBjoern Reinhold
 
Grails im Überblick und in der Praxis
Grails im Überblick und in der PraxisGrails im Überblick und in der Praxis
Grails im Überblick und in der PraxisTobias Kraft
 

Ähnlich wie Swagger - Rest APIs im Griff (20)

Gewinnung von OPEN SOURCE Techniken für junge Unternehmen
Gewinnung von OPEN SOURCE Techniken für junge UnternehmenGewinnung von OPEN SOURCE Techniken für junge Unternehmen
Gewinnung von OPEN SOURCE Techniken für junge Unternehmen
 
Automatischer Build mit Maven - OPITZ CONSULTING - Stefan Scheidt
Automatischer Build mit Maven - OPITZ CONSULTING - Stefan ScheidtAutomatischer Build mit Maven - OPITZ CONSULTING - Stefan Scheidt
Automatischer Build mit Maven - OPITZ CONSULTING - Stefan Scheidt
 
Apache DeviceMap - Mobile Geräteerkennung für Java EE - JavaLand 2014
Apache DeviceMap - Mobile Geräteerkennung für Java EE - JavaLand 2014Apache DeviceMap - Mobile Geräteerkennung für Java EE - JavaLand 2014
Apache DeviceMap - Mobile Geräteerkennung für Java EE - JavaLand 2014
 
Informatik Seminar Groovy Und Grails
Informatik Seminar Groovy Und GrailsInformatik Seminar Groovy Und Grails
Informatik Seminar Groovy Und Grails
 
LeanIX Swagger REST API @ Open Source Konferenz FrosCon, Sankt Augustin
LeanIX Swagger REST API @ Open Source Konferenz FrosCon, Sankt AugustinLeanIX Swagger REST API @ Open Source Konferenz FrosCon, Sankt Augustin
LeanIX Swagger REST API @ Open Source Konferenz FrosCon, Sankt Augustin
 
Automatischer Build mit Maven
Automatischer Build mit MavenAutomatischer Build mit Maven
Automatischer Build mit Maven
 
Ist Gradle auch für die APEX-Projekte?
Ist Gradle auch für die APEX-Projekte?Ist Gradle auch für die APEX-Projekte?
Ist Gradle auch für die APEX-Projekte?
 
JavaFX goes open source
JavaFX goes open sourceJavaFX goes open source
JavaFX goes open source
 
Von Maven zu Gradle in 45 Minuten
Von Maven zu Gradle in 45 MinutenVon Maven zu Gradle in 45 Minuten
Von Maven zu Gradle in 45 Minuten
 
Article - JDK 8 im Fokus der Entwickler
Article - JDK 8 im Fokus der EntwicklerArticle - JDK 8 im Fokus der Entwickler
Article - JDK 8 im Fokus der Entwickler
 
Testing einer Angular App
Testing einer Angular AppTesting einer Angular App
Testing einer Angular App
 
MongoDB Munich 2012: Spring Data MongoDB
MongoDB Munich 2012: Spring Data MongoDBMongoDB Munich 2012: Spring Data MongoDB
MongoDB Munich 2012: Spring Data MongoDB
 
Automatisierung mit grunt
Automatisierung mit gruntAutomatisierung mit grunt
Automatisierung mit grunt
 
Api Platform: the ultimate API Platform
Api Platform: the ultimate API PlatformApi Platform: the ultimate API Platform
Api Platform: the ultimate API Platform
 
Java EE Microservices ohne Server
Java EE Microservices ohne ServerJava EE Microservices ohne Server
Java EE Microservices ohne Server
 
Collaboration - dann klappt’s auch mit dem ‘Nachbarn’ - mff 2009
Collaboration - dann klappt’s auch mit dem ‘Nachbarn’ - mff 2009Collaboration - dann klappt’s auch mit dem ‘Nachbarn’ - mff 2009
Collaboration - dann klappt’s auch mit dem ‘Nachbarn’ - mff 2009
 
FMK2019 FileMaker Data API mit Node.js nutzen by Adam Augustin
FMK2019 FileMaker Data API mit Node.js nutzen by Adam AugustinFMK2019 FileMaker Data API mit Node.js nutzen by Adam Augustin
FMK2019 FileMaker Data API mit Node.js nutzen by Adam Augustin
 
2008 - Gewinnung von OPEN SOURCE Techniken für junge Unternehmen
2008 - Gewinnung von OPEN SOURCE Techniken für junge Unternehmen2008 - Gewinnung von OPEN SOURCE Techniken für junge Unternehmen
2008 - Gewinnung von OPEN SOURCE Techniken für junge Unternehmen
 
Grails im Überblick und in der Praxis
Grails im Überblick und in der PraxisGrails im Überblick und in der Praxis
Grails im Überblick und in der Praxis
 
SignalR
SignalRSignalR
SignalR
 

Swagger - Rest APIs im Griff