Schulung: API & REST Design

Einen REST Service zu programmieren ist einfach. Ein elegantes API zu entwerfen, welches einfach zu verwenden ist, ist etwas anderes. Und genau darum geht es in dieser Schulung, die den REST Web Services Kurs ergänzt. Der Schulung beantwortet u.a. die folgenden Fragen:

  • Wie muss ein API aufgebaut sein, damit es einfach zu verwenden ist?
  • Wie gehe ich beim API Design vor?
  • Welche Spezifikationen und Werkzeuge gibt es für das API Design? Und wie sinnvoll bzw. verbreitet sind diese?
  • Wie erweitere und verändere ich ein API?
  • Welche Firmen, Tools und Spezifikationen weisen der Branche den Weg?
  • Wie vermeide ich Stolperfallen?

Lerne von den Großen des Webs: wie gestalten Google, Facebook, Netflix und Twitter Ihre APIs? Übernehme Muster und Best Practise Ansätze für Deine eigenen API Projekte.

Im großen Praxisteil erstellst Du APIs und verwendest dabei nützliche Werkzeuge.

In der Schulung zum API Design übst du den Entwurf von REST Schnittstellen und erfährst alles, um schöne REST-konforme Ressourcen zu erstellen.

API Einführung

  • Was ist ein API?
  • Wie unterscheidet sich ein API von Web Services, CORBA, ...
  • Von Puristen und Pragmatikern
  • Der API Lifecycle
  • Die REST Prinzipien: Adressierbarkeit, Repräsentationen, Uniform Interface, Statuslosigkeit

Resource & URI Design

  • Was ist eine Resource?
  • Wie modelliere ich Ressourcen?
  • URL, URI und URN
  • Aufbau und Struktur einer URI
  • Bestimmen des API Entrypoints
  • URI Templates, RFC 6570
  • Identifier in der URI verwenden

Parameter

  • Query-, Path-, Header-, Body- und Matrix-Parameter
  • Für was setzte ich welche Art von Parameter ein?
  • Defaults für Parameter
  • Formate für Datum- und Uhrzeit

Suchen, Filtern & Sortieren

  • Blättern
  • Filtern nach Typ, Feldname

HTTP Methoden II

  • Überlick zu GET, POST, PUT, DELETE, HEAD, OPTIONS, PATCH, TRACE
  • PATCH versus PUT
  • Idempotenz

Formate

  • XML, YAML oder JSON oder?
  • Der richtige Content-Type
  • Content Negotiation: Wie Client und Server das Format aushandlen
  • JSON API

JSON Design

  • Struktur von JSON Nachrichten
  • JSON Schema
  • Envelope für Daten?

Versionierung

  • Evolution oder Revolution?
  • Semantic Versioning
  • Wohin mit der Versionsnummer?
  • Das Tolerant Reader Pattern
  • Versionierung von JSON, XML und anderen Formaten

Fehlerbehandlung

  • Fehlerarten
  • Beschreibung von Fehlern
  • Status Codes: 4XX, 5XX
  • Fehlermeldungen

Transaktionen

  • Optimistic Locking mit REST
  • Long Runner

REST Design Patterns

  • Idempotent Capability
  • Command and Query Responsibility Segregation CQRS

API Design Prozess

  • Wie gehe ich beim API Design vor?
  • Sharing und Collaboration
  • API Mocking

Guidelines & Richtlinien

  • Namenskonventionen und Schreibweisen
  • Erstellen von eigenen Guidelines oder Übernahme von bestehenden Guidelines?

HATEOAS

  • Schnittstellenentwicklung mit Hypertext & Hypermedia
  • Beziehungen mit Bedeutung: Semantic Relationships
  • Link Formate: Atom, HAL, JSON-LD, Siren oder Web Linking?
  • Expandieren von Links
  • Navigation und Pagination
  • Der Link Header
  • Vorteile und Nachteile von HATEOAS

API Beschreibung & Dokumentation

  • Formate zur API Beschreibung im Überblick: API Blueprint, RAML, Swagger und WADL
  • Automatisches Erzeugen von Dokumentation
  • Service Life Cycle und API Description
  • Code Generierung aus API Spezifikationen
  • Wie dokumentiere und beschreibe ich meine Resourcen am besten?
  • Dokumentation und generische Clients aus Metadaten erzeugen
  • Beispiele mit curl

Swagger

  • Erkunden und Testen eines API mit der Swagger UI
  • Beschreibung eines REST API mit dem Swagger Editor
  • Erzeugen von Client- und Servercode aus Swagger
  • Generierung von Swagger Spezifikationen aus bestehendem Code
  • Swagger-Unterstützung von Werkzeugen und Frameworks

API Discovery

  • Finden von Services und Resourcen
  • API Repository, Notebook u. Directory
  • Verwaltung von API Definitionen
  • API Mangement

Caching

  • Zeit- oder Inhaltsbasiert?
  • Bedingte Abfragen mit: Last-Modified, If-Modified-Since und ETag Header

API Security

  • Sicheres API Design
  • HTTP Header 401, 403, 405
  • Security Anti Patterns
  • Reverse API Proxies

REST Antipatterns

  • RPC-like Interfaces
  • CRUDy Interface
  • HTTP Tunnel

API Design Markübersicht

  • Welche Player gibt es auf dem Markt und wie positionieren sich diese?
  • Die API Player im Überblick: 3Scale, Apiary, Apigee, Apimatic, Mulesoft, Mashape
  • Was sind die aktuellen API Design Trends?
  • Produkte und Spezifikationen im Überblick
  • Die Tools: API Editoren, Repositories, Validatoren

Deine Vorteile

  • Du lernst wie Du elegante REST APIs entwerfen kannst, die einfach zu verwenden sind

Dauer

2 Tag

Zielgruppe

API Designer, Software Architekten, Web Entwickler, Programmierer

Vorkenntnisse

REST Grundlagen wie sie im Seminar REST Web Services vermittelt werden

Kursunterlage

Handouts aller in der Schulung präsentierten Folien.

* Gesamtpreis pro Teilnehmer inkl. Kursmaterial und Tagesverpflegung zzgl. Mehrwertsteuer