und skalierbare Backend-Architekturen ▪ Identity und Access Management ▪ Entwickler-Produktivität ▪ Softwarequalität ▪ Alles rund um .NET Core ▪ [email protected] ▪ Twitter: @phoenixhawk Advanced ASP.NET Core Web APIs
ASP.NET Core Web API? ▪ Jede Menge technische Details ☺ ▪ Was sonst? API Clients & Tests generieren ▪ Fragen und Antworten Advanced ASP.NET Core Web APIs
und was ist Swagger? • Swashbuckle.Swagger kann eine OpenAPI-Dokumentation für uns generieren • Swagger UI erlaubt es die Dokumentation zu erleben • Das Dokument kann zur Generierung von Client-Code verwendet werden • Das Dokument kann zur Generierung von Postman Collections verwendet werden • Wir können uns damit eine Menge manueller & fehleranfälliger Arbeit ersparen Advanced ASP.NET Core Web APIs
Smartbear Software • Open Source und kommerzielle / closed source Komponenten • Smartbear Software & andere Firmen (Google, IBM & Microsoft) starten die Open API Initiative im Nov. 2015 als Teil der Linux Foundation • Smartbear gibt seine Swagger specification an die OpenAPI Initiative • Erstes Release der überarbeiteten OpenAPI Specification 3.0 im Oktober 2017 • Smartbear Software arbeitet weiter am Swagger Tooling (Swagger Editor, Swagger CodeGen, Swagger UI, etc.) • TL;DR; • OpenAPI = Spezifikation • Swagger = Tooling Advanced ASP.NET Core Web APIs
Beispieldaten und Beispiel-Aufrufe • Verständlich • Erforsch- bzw. Erlebbar • Durchsuchbar • So weit automatisiert wie möglich • Idealerweise so Vielseitig wie möglich Advanced ASP.NET Core Web APIs
Swagger-Tooling kann aus diesen Metadaten viele Informationen extrahieren die für die Dokumentation relevant sind • Swashbuckle.Swagger für .NET (Core) Projekte • Author: Richard Morris (Getty Images, nicht Smartbear) • Generiert automatisch ein OpenAPI Document (swagger.json) mithilfe eines eigenen Generators • Liefert ein (leicht) angepasstes SwaggerUI aus, um eine Dokumentations-Webseite bereitzustellen Advanced ASP.NET Core Web APIs
Client-Code • Diese Clients bestehen normalerweise aus ungeheuer viel gleichem Code aus Vorlagen und viel copy&paste • Unterschiede liegen eigentlich nur in Parametern, Headern, Format des Bodys (Schema), Http-Methode und Format der Antwort (Schema) • Alle diese Informationen sind bekannt und dokumentiert • Alle diese Informationen stehen in unserem OpenAPI 3.0 Dokument (swagger.json) bereit • Daraus können wir Clients automatisch generieren Advanced ASP.NET Core Web APIs
sie sich wie erwartet verhalten und funktionieren • Postman kann bei manuellen und automatisierten Tests helfen • Alle Tests manuell aufsetzen ist aufwändig und fehleranfällig • Postman kann unser swagger.json importieren und damit den Großteil der Requests schon vorausfüllen • Postman tests verwenden • Chai Assertion Library • tv4 (Tiny Validator for v4 JSON Schema) (deprecated) • Ajv (Another JSON Schema Validator) (muss derzeit noch manuell eingebunden werden) Advanced ASP.NET Core Web APIs