SlideShare ist ein Scribd-Unternehmen logo
API-Dokumentation
mit OpenAPI/Swagger für ASP
.NET Core
Gregor Biswanger | Freier Berater, Trainer und Autor
about.me/gregor.biswanger
Dieser kostenlose Workshop ist ein Bestandteil meiner
kommerziellen Workshops zu:
▪ Einstieg in ASP
.NET Core (3-5 Tage)
▪ Advanced REST-APIs mit ASP
.NET Core (3 Tage)
▪ Einstieg in GraphQL mit ASP
.NET Core (3 Tage)
▪ Einstieg in gRPC mit ASP
.NET Core (2 Tage)
▪ Einstieg in SignalR mit ASP
.NET Core (2 Tage)
Lust das wir gemeinsam durchstarten bei deiner Firma?
Dann bitte einfach direkt an mich wenden!
Kostenlos auf meinem YouTube Kanal:
„.NET Web-API Entwicklung lernen“
http://bit.ly/dotnet-web-api-entwicklung
Über mich
▪ Freier Berater, Trainer und Autor
▪ Schwerpunkte: Softwarearchitektur, Web und
Cross-Plattform Entwicklung mit C# und JavaScript
▪ Papa von Electron.NET
▪ Technologieberater für die Intel Developer Zone
▪ Internationaler Sprecher auf Konferenzen und
User Groups
▪ Freier Autor für heise.de, dotnetpro,
WindowsDeveloper und viele weitere
Fachmagazine
▪ Video-Trainer bei video2brain und Microsoft
Gregor Biswanger
Microsoft MVP
, Intel Black Belt &
Intel Software Innovator
cross-platform-blog.de
about.me/gregor.biswanger
Reiseplan
▪ Einführung
▪ Setup und Start
▪ Meine erste API-Dokumentation
▪ Konventionen für die OpenAPI
▪ Umfangreiche Requests und Responses
▪ Versionierung
▪ Security
▪ Erweiterte Anpassung
Eine echte RESTfull API sollte immer den
Konsumenten mit seinen Möglichkeiten selbst
führen können.
Allerdings ist eine pragmatische HTTP-API
die am häufigsten zum Einsatz kommt.
Diese erfordern für ein besseres Verständnis,
einen Wegweiser mittels API-Dokumentation.
Ebenfalls ist eine API-Dokumentation für beide
varianten relevant um detaillierte Informationen
zu bieten.
Zum Beispiel: Security, Zugriffseinschränkungen
und weitere Sonderfälle.
Mithilfe der OpenAPI-Spezifikation können
wir unsere API Funktionen beschreiben.
Diese ist standardisiert und im
JSON- oder YAML-Format.
Swagger ist eine Sammlung von Open-Source-
Werkzeugen, um HTTP-Webservices zu entwerfen,
zu erstellen, zu dokumentieren und zu nutzen.
Swagger benutzt dazu den
Beschreibungsstandard OpenAPI.
OpenAPI-Komponenten und -Tools
REST API
Code
Web UI
API Tests
JSON
YAML
OpenAPI
Swagger Swagger
Swagger Open-Source Tools
Swagger Editor
Unterstützt beim
Erzeugen der API-
Definition.
Swagger Codegen
Generiert Server
Stubs und Client
SDKs
Swagger UI
Erzeugt
Dokumentation.
Daneben existieren auch kostenpflichtige Tools
▪ SwaggerHub für Kollaboration.
▪ SwaggerHub Enterprise für Unternehmen, verfügbar in der
Cloud oder On-Premises.
▪ Swagger Inspector für Testzwecke.
▪ APITree wandelt OpenAPI-Spezifikationen 2.0 und 3.0 in
menschenlesbare API-Dokumentationen um, die über einen HUB
kostenlos in der Cloud verwaltet und geteilt werden können.
Die Geschichte von Swagger / OpenAPI
2011 2015 2017
Swagger-API-Projekt
veröffentlicht
Linux-Foundation
Unterstützung
Mehr als 100.000
Downloads am Tag
Swagger-Spezifikation in OpenAPI
Spezifikation unbenannt
Swashbuckle.AspNetCore hilft bei der
Arbeit mit OpenAPI in ASP.NET Core
Swashbuckle.AspNetCore
Generiert eine
OpenAPI-Spezifikation
aus Ihrer API
Ein Wrapper für die
Swagger-UI und bietet
eine eingebettete
Version davon
NSwag ist eine
Alternative für
Swashbuckle
Setup und Start
Visual Studio 2019 und das .NET Core SDK
unter www.asp.net
Download der Vorlage
http://bit.ly/AspSwaggerWorkshop
C:dev>
Cloning into 'AspSwaggerWorkshop'...
remote: Enumerating objects: 111, done.
remote: Counting objects: 100% (111/111), done.
remote: Compressing objects: 100% (63/63), done.
Receiving objects: 39% (44/111) Total 111 (delta 52), reused 93 (delta 34), pack-reus
Receiving objects: 100% (111/111), 25.86 KiB | 3.69 MiB/s, done.
Resolving deltas: 100% (52/52), done.
C:dev>
git clone https://github.com/GregorBiswanger/AspSwaggerWorkshop.git
cd AspSwaggerWorkshop
C:devAspSwaggerWorkshop> dotnet restore
Wiederherzustellende Projekte werden ermittelt...
"C:UsersGregorsourcereposDevAspSwaggerWorkshopAspRestApiWorkshop.csproj" wied
C:dev>
Das Template mit
Git Clonen
C:devAspSwaggerWorkshop>
Das Tool "dotnet-ef" wurde in der neuesten Version installiert (Version 5.0.4).
C:devAspSwaggerWorkshop>
dotnet tool install --global dotnet-ef
Die Entity Framework CLI
installieren
C:devAspSwaggerWorkshop>
_/__
---==/ 
___ ___ |. |
| __|| __| | ) 
| _| | _| _/ | //|
|___||_| / /
Entity Framework Core .NET Command Line Tools 5.0.4
Usage: dotnet ef [options] [command]
Options:
--version Show version information
-h|--help Show help information
-v|--verbose Show verbose output.
--no-color Don't colorize output.
--prefix-output Prefix output with level.
Commands:
dotnet ef
Der Kommando dotnet ef
steht für die EF CLI
C:devAspSwaggerWorkshop>
Build started...
Build succeeded.
Done.
C:devAspSwaggerWorkshop>
dotnet ef database update
Der Migration-Code wird ausgeführt um
die Datenbank zu Erzeugen
Postman herunterladen und installieren
www.postman.com/downloads
Kestrel Web-Server
auswählen und starten
Meine erste App-Dokumentation
Unsere Ressourcen
Camp
Talk
Speaker
Location
API Design
http://.../api/camps
http://.../api/camps/DWX2020
http://.../api/camps/DWX2020/talks
http://.../api/camps/DWX2020/talks?topic=dotnet
http://.../api/camps/DWX2020/talks/1
http://.../api/camps/DWX2020/talks/1/speaker
http://.../api/reloadconfig
Swashbuckle
hinzufügen
Swashbuckle ist
bereits installiert
Swagger unter
Services registrieren
Die Swagger-Middleware
einbinden
Die automatisch erzeugte
OpenAPI JSON-Datei
Allgemeine Informationen
API-Routen + Meta-Daten
DTO´s + Meta-Daten
Swagger UI
hinzufügen
Die Swagger UI-
Middleware einbinden
Projekt ausführen und die
Swagger UI im Browser öffnen
API-Route öffnen und
zum Testen auswählen
API-Anfrage abschicken
Die Antwort wird direkt
darunter angezeigt
Benutzerdefinierte Route
für die Swagger UI festlegen
Swagger UI über die
neue URL öffnen
XML-Dokumentationskommentare
hinzufügen
XML-Dokumentationskommentar
hinzufügen
In die Eigenschaften wechseln,
mit einem Doppelklick auf
Properties.
XML-Dokumentationskommentare
für das Projekt aktivieren
Fester Pfad zur XML-
Datei entfernen
XML-Datei bei
Swagger einbinden
Kommentare werden in der
Dokumentation angezeigt
Ebenfalls Data-Annotations
werden dokumentiert
Weitere Informationen über
remarks-Tag anzeigen lassen
Die Anzeige der weiteren
Informationen
Warnungen
entfernen
Beim Builden werden
Warnungen angezeigt
In die Eigenschaften wechseln,
mit einem Doppelklick auf
Properties.
Warnungs-Codes zum
Ignorieren eintragen
Build läuft ohne
Warnungen
Zusätzliche
API-Informationen
Allgemeine Informationen
hinterlegen
Die Anzeige der
allgemeinen Informationen
Was haben wir bis jetzt gelernt?
▪ Die OpenAPI-Spezifikation ist die Basis für Swagger UI
▪ XML-Kommentare zu Aktionen, Klassen und
Eigenschaften können in die Spezifikation übersetzt
werden
▪ Datenanmerkungen wirken sich auf die Spezifikation aus
▪ Eine Spezifikation sollte eine allgemeine Beschreibung
der API enthalten
Konventionen für die OpenAPI
Der
ApiExplorer
Der ApiExplorer ist eine Abstraktion über
ASP
.NET Core MVC, die Metadaten zu dieser
Anwendung verfügbar macht.
Swashbuckle verwendet die Metadaten, die
ApiExplorer verfügbar macht, um eine OpenAPI-
Spezifikation zu generieren.
Der ApiExplorer ist
standardmäßig aktiviert.
Eine OpenAPI-Spezifikation sollte alle
möglichen Antworttypen (404, 422, ...) für
die Ressourcen-URI enthalten.
Das Ermöglicht Verbrauchern,
entsprechend zu handeln.
Unsere Spezifikation muss mit der
Realität unserer API übereinstimmen.
Die Statuscodes werden
nicht angezeigt
ProducesResponseType-
Attribute helfen hierbei
Ebenfalls können generische
Rückgabetypen festgelegt werden
Die Statuscodes werden jetzt in
der Dokumentation angezeigt
Den ApiExplorer installieren
API Analyzer in der
Solution-Datei aktivieren
Warnungs-Codes für den
API Analyzer entfernen
Der Analyzer zeigt
gefundene Probleme an
Durch das integrierte Tooling können
diese einfach behoben werden
Attribute über der Klasse, sind
automatisch für alle Methoden gültig
Nicht alle möglichen Statuscodes
konnten ermitteln werden
Attribute können ebenfalls
Global festgelegt werden
Eine alternative wären die
Standard API Konventionen
Eigene
Konventionen
Ein Post gibt per Standard
einen 201-Statuscode
Wird nur der Methoden-Name geändert,
wird der Statuscode falsch ermittelt
Eine eigene Konvention
hilft bei diesem Problem
Eigene Konvention
zuweisen
Der richtige Statuscode
wird angezeigt
Dieser kann ebenfalls für die ganze
Klasse automatisch aktiviert werden
Oh! Wieder falsch?
Match-Regeln
müssen dazu
Puh.. Glück gehabt!
Attribute
Verwende Attribute anstelle von Konventionen.
Konventionen
Werden von Attributen überschrieben.
Ein Fehler kann schwerwiegende Folgen
haben.
Gut für sehr einfache APIs, nicht geeignet für
umfangreichere APIs
Verwende den API Analyzer, aber verlasse Dich nicht
darauf, eine vollständige Abdeckung zu erhalten.
Verwende ProducesDefaultResponseType, aber
gebe nach Möglichkeit den genauen Typ an.
Wende Attribute nach
Möglichkeit global an.
Was haben wir bis jetzt gelernt?
▪ Verwende das ProducesResponseType-Attribut, um
die möglichen Antworttypen (Statuscodes)
anzugeben.
▪ Verwende den API-Analyzer, um diese zu ermitteln
(aber verlasse dich nicht nur auf sie).
▪ Bevorzuge Attribute gegenüber Konventionen
Umfangreiche Requests
und Responses
Content Negotiation
(Inhaltsvereinbarung)
Die Content Negotiation ist der Mechanismus, mit dem
verschiedene Darstellungen einer Ressource an derselben
URI bereitgestellt werden können.
Format beim Header der Anfrage festlegen
Accept: application/xml, text/xml
Anfrage-Header
Antwort-Header
Content Type: application/xml
Zusätzlicher XML Serializer
Support
Vendor-Spezifischer Media Type
application/vnd.marvin.hateoas+json
Top-level type
Vendor prefix
Vendor identifier
Media type name
Suffix
Eigenen Media-Type
festlegen
HATEOAS nur bei
MediaType-Anfrage
GetCamp abfrage
mit der Swagger UI
Neuer Media-Type
steht zur Verfügung
Semantic
Media Types
Semantische Medientypen sind
Medientypen, die etwas über die Bedeutung
der Daten aussagen.
REST API
Client
/conference/speaker/1
application/vnd.marvin.speaker.friendly+json
JSON
{
"name": "Gregor Biswanger"
}
/conference/speaker/1
application/vnd.marvin.speaker.full+json
JSON
{
"firstName": "Gregor",
"lastName": "Biswanger"
}
Die CampModel-Klasse kopieren
und in CampFriendlyModel-
Klasse umbenennen.
Name- und Moniker-
Property zusammenführen
Neues Mapping für
AutoMapper festlegen
Helper-Attribute für Media-Types
https://pastebin.com/swmhV5gX
GetCamp-Methode
kopieren und anpassen
OpenAPI Problem mit zwei
gleichen HTTP-Methoden
Filter für gleiche HTTP-Methoden
https://pastebin.com/ga0AJ9s0
Neuen Operation-Filter
registrieren
ApiExplorer soll diese
Methode ignorieren
GetCamp hat jetzt einen
Semantic Media Type
Semantic Media Types für
eingehende Daten
Neues DTO mit weniger
Daten anlegen
Neues Mapping für
AutoMapper festlegen
Insert Methode kopieren und
mit neuen DTO als Parameter
Neuen Operation Filter für die
InsertSimpleCamp Methode
Neuen Operation-Filter
registrieren
Insert-Post ausführen mit
neuem Semantic Media-Type
Was haben wir bis jetzt gelernt?
▪ Verwende herstellerspezifische Medientypen, um
den tatsächlichen Datentyp anzugeben.
▪ OpenAPI 3 ermöglicht die Variation des Schemas
nach Medientyp.
▪ Verwende den lOperationFilter, um die
Unterstützung in Swashbuckle zu implementieren.
Versionierung
Arbeiten mit mehreren
OpenAPI-Spezifikationen
API-Dokumentation in
zwei Gruppen erzeugen
Zwei Endpunkte bei
Swagger UI registrieren
Controller in
Gruppe zuweisen
Controller in
Gruppe zuweisen
Unterschiedliche Gruppen
stehen zur Auswahl
Nur Speaker-Gruppe
wird angezeigt
API
Versionierung
Bei einer Veränderung der Umgebung, wird oft
eine API Versionierung notwendig.
Eine neue API Version sollte nicht,
durch neue Produkte entstehen.
Zum Vergleich einer Assembly Versionierung,
sind API Versionierungen um einiges härter.
Bestehende Clients sollen weiterhin konsumieren
können, ohne einem Betriebsausfall.
Unterschiedliche
Versionierungsmöglichkeiten
URI Pfad
https://../api/v2/customers
Query String
https://../api/customers?v=2.0
Versionierung durch Headers
GET /api/people/1 HTTP/1.1
Host: swapi.dev
Cache-Control: no-cache
Referer: http://swapi.dev/api/people/
X-Version: 2.0
Versionierung durch den Accept Header
GET /api/people/1 HTTP/1.1
Host: swapi.dev
Cache-Control: no-cache
Referer: http://swapi.dev/api/people/
Accept: application/json;version=2.0
Versionierung
hinzufügen
ASP.NET Core Versioning
installieren
CampsController kopieren
und umbenennen.
Neue Version festlegen
und Umbenennen
Neuen Rückgabe-Typen
implementieren
Versionierungen in Route bei
allen Controllern übernehmen
Url-Path
Versionierungen
API Dokumentation für
unterschiedliche Versionen erzeugen
Neue Endpunkte bei
Swagger UI registrieren
API Dokumentation für
unterschiedliche Versionen
Was haben wir bis jetzt gelernt?
▪ Gruppenoperationen über die GroupName-
Eigenschaft in ApiExplorerSettings
▪ Gruppieren der Operationen nach API-Version
Basic Authentifizierung
mit OpenAPI
Basic Authentication Code
https://pastebin.com/8z2y76P9
Basic Authentifizierung
zur API hinzufügen
Basic Authentifizierung zur
API-Dokumentation hinzufügen
Auth-Middlewares
hinzufügen
Autorisierung für den
CampsController aktivieren
API-Dokumentation mit
Authentifizierung
Anmelden mit den
Benutzerdaten
APIs sind Autorisiert
Was haben wir bis jetzt gelernt?
▪ API Authentifizierung mit SecuritySchemes Tags
beschreiben:
▪ AddSecurityDefinition
▪ AddSecurityRequirement
Erweiterte Anpassung
Für das Anpassen von Kommentaren
wird Markdown verwendet.
Markdown für die
Dokumentationskommentare einsetzen
Swagger UI zeigt die
Beschreibung formatiert an
Unterschiedliche Einstellungen
für die Swagger UI
Neue Standard
Darstellung
API-Methoden sind über
DeepLinking verfügbar
Eigene Farben über eine
eigene CSS-Datei festlegen
Eigene CSS-Datei
einbinden
Design aus der CSS-Datei
wurde übernommen
Was haben wir bis jetzt gelernt?
▪ Für XML-Kommentare kann Markdown verwendet
werden
▪ Halte dich an die grundlegende Markdown-Syntax
▪ Über die Konfigurations-API können wir die
grundlegende Ul-Funktionalität steuern
▪ Für ein erweitertes Branding können wir CSS,
JavaScript einfügen oder die Indexseite vollständig
ersetzen
Was haben wir bis jetzt gelernt?
▪ Die OpenAPI-Spezifikation ist die Basis für Swagger UI
▪ XML-Kommentare zu Aktionen, Klassen und
Eigenschaften können in die Spezifikation übersetzt
werden
▪ Datenanmerkungen wirken sich auf die Spezifikation aus
▪ Eine Spezifikation sollte eine allgemeine Beschreibung
der API enthalten
Was haben wir bis jetzt gelernt?
▪ Verwende das ProducesResponseType-Attribut, um
die möglichen Antworttypen (Statuscodes)
anzugeben.
▪ Verwende den API-Analyzer, um diese zu ermitteln
(aber verlasse dich nicht nur auf sie).
▪ Bevorzuge Attribute gegenüber Konventionen
Was haben wir bis jetzt gelernt?
▪ Verwende herstellerspezifische Medientypen, um
den tatsächlichen Datentyp anzugeben.
▪ OpenAPI 3 ermöglicht die Variation des Schemas
nach Medientyp.
▪ Verwende den lOperationFilter, um die
Unterstützung in Swashbuckle zu implementieren.
Was haben wir bis jetzt gelernt?
▪ Gruppenoperationen über die GroupName-
Eigenschaft in ApiExplorerSettings
▪ Gruppieren der Operationen nach API-Version
Was haben wir bis jetzt gelernt?
▪ API Authentifizierung mit SecuritySchemes Tags
beschreiben:
▪ AddSecurityDefinition
▪ AddSecurityRequirement
Was haben wir bis jetzt gelernt?
▪ Für XML-Kommentare kann Markdown verwendet
werden
▪ Halte dich an die grundlegende Markdown-Syntax
▪ Über die Konfigurations-API können wir die
grundlegende Ul-Funktionalität steuern
▪ Für ein erweitertes Branding können wir CSS,
JavaScript einfügen oder die Indexseite vollständig
ersetzen
Alle fertige Lösungen als Branch
http://bit.ly/AspSwaggerWorkshop
Dieser kostenlose Workshop ist ein Bestandteil meiner
kommerziellen Workshops zu:
▪ Einstieg in ASP
.NET Core (3-5 Tage)
▪ Advanced REST-APIs mit ASP
.NET Core (3 Tage)
▪ Einstieg in GraphQL mit ASP
.NET Core (3 Tage)
▪ Einstieg in gRPC mit ASP
.NET Core (2 Tage)
▪ Einstieg in SignalR mit ASP
.NET Core (2 Tage)
Lust das wir gemeinsam durchstarten bei deiner Firma?
Dann bitte einfach direkt an mich wenden!
Kostenlos auf meinem YouTube Kanal:
„.NET Web-API Entwicklung lernen“
http://bit.ly/dotnet-web-api-entwicklung
Jeden Freitag live um 20:30 Uhr auf Twitch.
http://twitch.tv/GregorBiswanger
http://about.me/Gregor.Biswanger
Ich freue mich auf Feedback!
Vielen Dank!

Weitere ähnliche Inhalte

Was ist angesagt?

Nagios Conference 2007 | Pluginprogrammierung in Perl by Wolfgang Barth
Nagios Conference 2007 |  Pluginprogrammierung in Perl by Wolfgang BarthNagios Conference 2007 |  Pluginprogrammierung in Perl by Wolfgang Barth
Nagios Conference 2007 | Pluginprogrammierung in Perl by Wolfgang BarthNETWAYS
 
Automatischer Build mit Maven
Automatischer Build mit MavenAutomatischer Build mit Maven
Automatischer Build mit MavenStefan Scheidt
 
HTML5 und node.js Grundlagen
HTML5 und node.js GrundlagenHTML5 und node.js Grundlagen
HTML5 und node.js GrundlagenMayflower GmbH
 
Eine Stunde was mit Api First!
Eine Stunde was mit Api First!Eine Stunde was mit Api First!
Eine Stunde was mit Api First!JanWeinschenker
 
JavaScript für Java-Entwickler W-JAX 2013
JavaScript für Java-Entwickler W-JAX 2013JavaScript für Java-Entwickler W-JAX 2013
JavaScript für Java-Entwickler W-JAX 2013Oliver Zeigermann
 
Deploy Magento Shops with Capistrano v3
Deploy Magento Shops with Capistrano  v3Deploy Magento Shops with Capistrano  v3
Deploy Magento Shops with Capistrano v3Roman Hutterer
 
EntwicklerCamp 2014 - DOTS reloaded
EntwicklerCamp 2014 - DOTS reloadedEntwicklerCamp 2014 - DOTS reloaded
EntwicklerCamp 2014 - DOTS reloadedRené Winkelmeyer
 
digitalSTROM Developer Day 2011: digitalSTROM bindet auch externe Komponenten...
digitalSTROM Developer Day 2011: digitalSTROM bindet auch externe Komponenten...digitalSTROM Developer Day 2011: digitalSTROM bindet auch externe Komponenten...
digitalSTROM Developer Day 2011: digitalSTROM bindet auch externe Komponenten...digitalSTROM.org
 
C / C++ Api for Beginners
C / C++ Api for BeginnersC / C++ Api for Beginners
C / C++ Api for BeginnersUlrich Krause
 
C API for Lotus Notes & Domino
C API for Lotus Notes & DominoC API for Lotus Notes & Domino
C API for Lotus Notes & DominoUlrich Krause
 
Build Patterns - Patterns und Best Practices für den Build Prozess
Build Patterns - Patterns und Best Practices für den Build ProzessBuild Patterns - Patterns und Best Practices für den Build Prozess
Build Patterns - Patterns und Best Practices für den Build ProzessRalf Abramowitsch
 
Informatik Seminar Groovy Und Grails
Informatik Seminar Groovy Und GrailsInformatik Seminar Groovy Und Grails
Informatik Seminar Groovy Und Grailsschmichri
 
C/ C++ for Notes & Domino Developers
C/ C++ for Notes & Domino DevelopersC/ C++ for Notes & Domino Developers
C/ C++ for Notes & Domino DevelopersUlrich Krause
 
Docker und Kubernetes Patterns & Anti-Patterns
Docker und Kubernetes Patterns & Anti-PatternsDocker und Kubernetes Patterns & Anti-Patterns
Docker und Kubernetes Patterns & Anti-PatternsQAware GmbH
 
HTML5 und CSS3 - was jetzt schon möglich ist
HTML5 und CSS3 - was jetzt schon möglich istHTML5 und CSS3 - was jetzt schon möglich ist
HTML5 und CSS3 - was jetzt schon möglich istRenate Hermanns
 
Fr os con2010_devel_nytprof
Fr os con2010_devel_nytprofFr os con2010_devel_nytprof
Fr os con2010_devel_nytprofRenee Baecker
 
Windows 10 IoT Core
Windows 10 IoT CoreWindows 10 IoT Core
Windows 10 IoT CoreJens Siebert
 
Vagrant, Puppet, Docker für Entwickler und Architekten
Vagrant, Puppet, Docker für Entwickler und ArchitektenVagrant, Puppet, Docker für Entwickler und Architekten
Vagrant, Puppet, Docker für Entwickler und ArchitektenOPITZ CONSULTING Deutschland
 
Fix & fertig: Best Practises für "XPages-Migranten"
Fix & fertig: Best Practises für "XPages-Migranten"Fix & fertig: Best Practises für "XPages-Migranten"
Fix & fertig: Best Practises für "XPages-Migranten"Oliver Busse
 

Was ist angesagt? (20)

Nagios Conference 2007 | Pluginprogrammierung in Perl by Wolfgang Barth
Nagios Conference 2007 |  Pluginprogrammierung in Perl by Wolfgang BarthNagios Conference 2007 |  Pluginprogrammierung in Perl by Wolfgang Barth
Nagios Conference 2007 | Pluginprogrammierung in Perl by Wolfgang Barth
 
Automatischer Build mit Maven
Automatischer Build mit MavenAutomatischer Build mit Maven
Automatischer Build mit Maven
 
HTML5 und node.js Grundlagen
HTML5 und node.js GrundlagenHTML5 und node.js Grundlagen
HTML5 und node.js Grundlagen
 
Eine Stunde was mit Api First!
Eine Stunde was mit Api First!Eine Stunde was mit Api First!
Eine Stunde was mit Api First!
 
JavaScript für Java-Entwickler W-JAX 2013
JavaScript für Java-Entwickler W-JAX 2013JavaScript für Java-Entwickler W-JAX 2013
JavaScript für Java-Entwickler W-JAX 2013
 
Deploy Magento Shops with Capistrano v3
Deploy Magento Shops with Capistrano  v3Deploy Magento Shops with Capistrano  v3
Deploy Magento Shops with Capistrano v3
 
EntwicklerCamp 2014 - DOTS reloaded
EntwicklerCamp 2014 - DOTS reloadedEntwicklerCamp 2014 - DOTS reloaded
EntwicklerCamp 2014 - DOTS reloaded
 
digitalSTROM Developer Day 2011: digitalSTROM bindet auch externe Komponenten...
digitalSTROM Developer Day 2011: digitalSTROM bindet auch externe Komponenten...digitalSTROM Developer Day 2011: digitalSTROM bindet auch externe Komponenten...
digitalSTROM Developer Day 2011: digitalSTROM bindet auch externe Komponenten...
 
C / C++ Api for Beginners
C / C++ Api for BeginnersC / C++ Api for Beginners
C / C++ Api for Beginners
 
C API for Lotus Notes & Domino
C API for Lotus Notes & DominoC API for Lotus Notes & Domino
C API for Lotus Notes & Domino
 
Build Patterns - Patterns und Best Practices für den Build Prozess
Build Patterns - Patterns und Best Practices für den Build ProzessBuild Patterns - Patterns und Best Practices für den Build Prozess
Build Patterns - Patterns und Best Practices für den Build Prozess
 
Informatik Seminar Groovy Und Grails
Informatik Seminar Groovy Und GrailsInformatik Seminar Groovy Und Grails
Informatik Seminar Groovy Und Grails
 
C/ C++ for Notes & Domino Developers
C/ C++ for Notes & Domino DevelopersC/ C++ for Notes & Domino Developers
C/ C++ for Notes & Domino Developers
 
Docker und Kubernetes Patterns & Anti-Patterns
Docker und Kubernetes Patterns & Anti-PatternsDocker und Kubernetes Patterns & Anti-Patterns
Docker und Kubernetes Patterns & Anti-Patterns
 
HTML5 und CSS3 - was jetzt schon möglich ist
HTML5 und CSS3 - was jetzt schon möglich istHTML5 und CSS3 - was jetzt schon möglich ist
HTML5 und CSS3 - was jetzt schon möglich ist
 
Fr os con2010_devel_nytprof
Fr os con2010_devel_nytprofFr os con2010_devel_nytprof
Fr os con2010_devel_nytprof
 
Windows 10 IoT Core
Windows 10 IoT CoreWindows 10 IoT Core
Windows 10 IoT Core
 
Vagrant, Puppet, Docker für Entwickler und Architekten
Vagrant, Puppet, Docker für Entwickler und ArchitektenVagrant, Puppet, Docker für Entwickler und Architekten
Vagrant, Puppet, Docker für Entwickler und Architekten
 
Fix & fertig: Best Practises für "XPages-Migranten"
Fix & fertig: Best Practises für "XPages-Migranten"Fix & fertig: Best Practises für "XPages-Migranten"
Fix & fertig: Best Practises für "XPages-Migranten"
 
Workshop: Besseres C#
Workshop: Besseres C#Workshop: Besseres C#
Workshop: Besseres C#
 

Ähnlich wie Hands-on Workshop: API-Dokumentation mit OpenAPI / Swagger in ASP.NET Core

Webinar - ABAP Development Tools
Webinar - ABAP Development ToolsWebinar - ABAP Development Tools
Webinar - ABAP Development ToolsCadaxo GmbH
 
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
 
B3 Lotus Expeditor Und Composite Applications
B3 Lotus Expeditor Und Composite ApplicationsB3 Lotus Expeditor Und Composite Applications
B3 Lotus Expeditor Und Composite ApplicationsAndreas Schulte
 
Commercial OS Shops - Magento, OXID, xt:commerce. Evaluationskriterien für En...
Commercial OS Shops - Magento, OXID, xt:commerce. Evaluationskriterien für En...Commercial OS Shops - Magento, OXID, xt:commerce. Evaluationskriterien für En...
Commercial OS Shops - Magento, OXID, xt:commerce. Evaluationskriterien für En...Mayflower GmbH
 
.NET Core, .NET Standard & ASP.NET Core - Eine Übersicht
.NET Core, .NET Standard & ASP.NET Core - Eine Übersicht.NET Core, .NET Standard & ASP.NET Core - Eine Übersicht
.NET Core, .NET Standard & ASP.NET Core - Eine ÜbersichtJürgen Gutsch
 
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
 
Magdeburger Developer Days 2018 - Warum warten auf die IDE?
Magdeburger Developer Days 2018 - Warum warten auf die IDE?Magdeburger Developer Days 2018 - Warum warten auf die IDE?
Magdeburger Developer Days 2018 - Warum warten auf die IDE?Robin Sedlaczek
 
Dnug35 ak-dev.071111-cookbook
Dnug35 ak-dev.071111-cookbookDnug35 ak-dev.071111-cookbook
Dnug35 ak-dev.071111-cookbookUlrich Krause
 
Codewiederverwendung in Xamarin-Apps maximieren
Codewiederverwendung in Xamarin-Apps maximierenCodewiederverwendung in Xamarin-Apps maximieren
Codewiederverwendung in Xamarin-Apps maximierenAndré Krämer
 
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
 
Apache DeviceMap - Web-Dev-BBQ Stuttgart
Apache DeviceMap - Web-Dev-BBQ StuttgartApache DeviceMap - Web-Dev-BBQ Stuttgart
Apache DeviceMap - Web-Dev-BBQ StuttgartWerner Keil
 
Software Entwicklung im Team
Software Entwicklung im TeamSoftware Entwicklung im Team
Software Entwicklung im Teambrandts
 
Einstieg in Xamarin und Xamarin.Forms, DDC 2018
Einstieg in Xamarin und Xamarin.Forms, DDC 2018Einstieg in Xamarin und Xamarin.Forms, DDC 2018
Einstieg in Xamarin und Xamarin.Forms, DDC 2018André Krämer
 
REST Problems
REST ProblemsREST Problems
REST Problemspredic8
 
Taugt AngularJS wirklich was? Erfahrungsbericht und Ausblick
Taugt AngularJS wirklich was? Erfahrungsbericht und AusblickTaugt AngularJS wirklich was? Erfahrungsbericht und Ausblick
Taugt AngularJS wirklich was? Erfahrungsbericht und AusblickPhilipp Burgmer
 
Ionic 2 - Hybridapps auf Steroiden
Ionic 2 - Hybridapps auf SteroidenIonic 2 - Hybridapps auf Steroiden
Ionic 2 - Hybridapps auf SteroidenHendrik Lösch
 
Make Developers Fly: Principles for Platform Engineering
Make Developers Fly: Principles for Platform EngineeringMake Developers Fly: Principles for Platform Engineering
Make Developers Fly: Principles for Platform EngineeringQAware GmbH
 
Oracle oem 12c_plugin_development-doag-konferenz_11_2014_print_gunther_pipperr
Oracle oem 12c_plugin_development-doag-konferenz_11_2014_print_gunther_pipperrOracle oem 12c_plugin_development-doag-konferenz_11_2014_print_gunther_pipperr
Oracle oem 12c_plugin_development-doag-konferenz_11_2014_print_gunther_pipperrGunther Pippèrr
 
B1 Acocon Lotus Day 08.09.2009
B1 Acocon Lotus Day 08.09.2009B1 Acocon Lotus Day 08.09.2009
B1 Acocon Lotus Day 08.09.2009Andreas Schulte
 
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
 

Ähnlich wie Hands-on Workshop: API-Dokumentation mit OpenAPI / Swagger in ASP.NET Core (20)

Webinar - ABAP Development Tools
Webinar - ABAP Development ToolsWebinar - ABAP Development Tools
Webinar - ABAP Development Tools
 
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
 
B3 Lotus Expeditor Und Composite Applications
B3 Lotus Expeditor Und Composite ApplicationsB3 Lotus Expeditor Und Composite Applications
B3 Lotus Expeditor Und Composite Applications
 
Commercial OS Shops - Magento, OXID, xt:commerce. Evaluationskriterien für En...
Commercial OS Shops - Magento, OXID, xt:commerce. Evaluationskriterien für En...Commercial OS Shops - Magento, OXID, xt:commerce. Evaluationskriterien für En...
Commercial OS Shops - Magento, OXID, xt:commerce. Evaluationskriterien für En...
 
.NET Core, .NET Standard & ASP.NET Core - Eine Übersicht
.NET Core, .NET Standard & ASP.NET Core - Eine Übersicht.NET Core, .NET Standard & ASP.NET Core - Eine Übersicht
.NET Core, .NET Standard & ASP.NET Core - Eine Übersicht
 
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
 
Magdeburger Developer Days 2018 - Warum warten auf die IDE?
Magdeburger Developer Days 2018 - Warum warten auf die IDE?Magdeburger Developer Days 2018 - Warum warten auf die IDE?
Magdeburger Developer Days 2018 - Warum warten auf die IDE?
 
Dnug35 ak-dev.071111-cookbook
Dnug35 ak-dev.071111-cookbookDnug35 ak-dev.071111-cookbook
Dnug35 ak-dev.071111-cookbook
 
Codewiederverwendung in Xamarin-Apps maximieren
Codewiederverwendung in Xamarin-Apps maximierenCodewiederverwendung in Xamarin-Apps maximieren
Codewiederverwendung in Xamarin-Apps maximieren
 
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
 
Apache DeviceMap - Web-Dev-BBQ Stuttgart
Apache DeviceMap - Web-Dev-BBQ StuttgartApache DeviceMap - Web-Dev-BBQ Stuttgart
Apache DeviceMap - Web-Dev-BBQ Stuttgart
 
Software Entwicklung im Team
Software Entwicklung im TeamSoftware Entwicklung im Team
Software Entwicklung im Team
 
Einstieg in Xamarin und Xamarin.Forms, DDC 2018
Einstieg in Xamarin und Xamarin.Forms, DDC 2018Einstieg in Xamarin und Xamarin.Forms, DDC 2018
Einstieg in Xamarin und Xamarin.Forms, DDC 2018
 
REST Problems
REST ProblemsREST Problems
REST Problems
 
Taugt AngularJS wirklich was? Erfahrungsbericht und Ausblick
Taugt AngularJS wirklich was? Erfahrungsbericht und AusblickTaugt AngularJS wirklich was? Erfahrungsbericht und Ausblick
Taugt AngularJS wirklich was? Erfahrungsbericht und Ausblick
 
Ionic 2 - Hybridapps auf Steroiden
Ionic 2 - Hybridapps auf SteroidenIonic 2 - Hybridapps auf Steroiden
Ionic 2 - Hybridapps auf Steroiden
 
Make Developers Fly: Principles for Platform Engineering
Make Developers Fly: Principles for Platform EngineeringMake Developers Fly: Principles for Platform Engineering
Make Developers Fly: Principles for Platform Engineering
 
Oracle oem 12c_plugin_development-doag-konferenz_11_2014_print_gunther_pipperr
Oracle oem 12c_plugin_development-doag-konferenz_11_2014_print_gunther_pipperrOracle oem 12c_plugin_development-doag-konferenz_11_2014_print_gunther_pipperr
Oracle oem 12c_plugin_development-doag-konferenz_11_2014_print_gunther_pipperr
 
B1 Acocon Lotus Day 08.09.2009
B1 Acocon Lotus Day 08.09.2009B1 Acocon Lotus Day 08.09.2009
B1 Acocon Lotus Day 08.09.2009
 
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
 

Mehr von Gregor Biswanger

MongoDB: Entwurfsmuster für das NoSQL-Schema-Design
MongoDB: Entwurfsmuster für das NoSQL-Schema-DesignMongoDB: Entwurfsmuster für das NoSQL-Schema-Design
MongoDB: Entwurfsmuster für das NoSQL-Schema-DesignGregor Biswanger
 
Fachmodell-First: Einstieg in das NoSQL-Schema-Design
Fachmodell-First: Einstieg in das NoSQL-Schema-DesignFachmodell-First: Einstieg in das NoSQL-Schema-Design
Fachmodell-First: Einstieg in das NoSQL-Schema-DesignGregor Biswanger
 
Clevere Tipps zum Thema Facebook Posts
Clevere Tipps zum Thema Facebook PostsClevere Tipps zum Thema Facebook Posts
Clevere Tipps zum Thema Facebook PostsGregor Biswanger
 
Responsive Webdesign mit Bootstrap
Responsive Webdesign mit BootstrapResponsive Webdesign mit Bootstrap
Responsive Webdesign mit BootstrapGregor Biswanger
 
Intel XDK: Cross-Plattform Entwicklung – Apps Entwickeln für alle Plattformen...
Intel XDK: Cross-Plattform Entwicklung – Apps Entwickeln für alle Plattformen...Intel XDK: Cross-Plattform Entwicklung – Apps Entwickeln für alle Plattformen...
Intel XDK: Cross-Plattform Entwicklung – Apps Entwickeln für alle Plattformen...Gregor Biswanger
 
Multi Touch.Prio.Conference 2009
Multi Touch.Prio.Conference 2009Multi Touch.Prio.Conference 2009
Multi Touch.Prio.Conference 2009Gregor Biswanger
 

Mehr von Gregor Biswanger (6)

MongoDB: Entwurfsmuster für das NoSQL-Schema-Design
MongoDB: Entwurfsmuster für das NoSQL-Schema-DesignMongoDB: Entwurfsmuster für das NoSQL-Schema-Design
MongoDB: Entwurfsmuster für das NoSQL-Schema-Design
 
Fachmodell-First: Einstieg in das NoSQL-Schema-Design
Fachmodell-First: Einstieg in das NoSQL-Schema-DesignFachmodell-First: Einstieg in das NoSQL-Schema-Design
Fachmodell-First: Einstieg in das NoSQL-Schema-Design
 
Clevere Tipps zum Thema Facebook Posts
Clevere Tipps zum Thema Facebook PostsClevere Tipps zum Thema Facebook Posts
Clevere Tipps zum Thema Facebook Posts
 
Responsive Webdesign mit Bootstrap
Responsive Webdesign mit BootstrapResponsive Webdesign mit Bootstrap
Responsive Webdesign mit Bootstrap
 
Intel XDK: Cross-Plattform Entwicklung – Apps Entwickeln für alle Plattformen...
Intel XDK: Cross-Plattform Entwicklung – Apps Entwickeln für alle Plattformen...Intel XDK: Cross-Plattform Entwicklung – Apps Entwickeln für alle Plattformen...
Intel XDK: Cross-Plattform Entwicklung – Apps Entwickeln für alle Plattformen...
 
Multi Touch.Prio.Conference 2009
Multi Touch.Prio.Conference 2009Multi Touch.Prio.Conference 2009
Multi Touch.Prio.Conference 2009
 

Hands-on Workshop: API-Dokumentation mit OpenAPI / Swagger in ASP.NET Core