
API-Design
Description
Alles über E-Books | Antworten auf Fragen rund um E-Books, Kopierschutz und Dateiformate finden Sie in unserem Info- & Hilfebereich.
More details
Other editions
Additional editions


Person
Content
- Cover
- Titel
- Impressum
- Widmung
- Inhaltsübersicht
- Inhaltsverzeichnis
- Teil I Grundlagen
- 1 Application Programming Interfaces - eine Einführung
- 1.1 Eine kurze Geschichte der APIs
- 1.2 Web-APIs ab dem Jahr 2000
- 1.3 API-Definition
- 1.4 Vorteile einer API
- 1.5 Nachteile einer API
- 1.6 API als Produkt
- 1.7 Welche Strategien verfolgen Unternehmen mit APIs?
- 1.8 API-first-Ansatz
- 1.9 Zusammenfassung
- 2 Qualitätsmerkmale
- 2.1 Allgemeine Qualitätsmerkmale
- 2.2 Benutzbarkeit
- 2.2.1 Konsistent
- 2.2.2 Intuitiv verständlich
- 2.2.3 Dokumentiert
- 2.2.4 Einprägsam und leicht zu lernen
- 2.2.5 Lesbaren Code fördernd
- 2.2.6 Schwer falsch zu benutzen
- 2.2.7 Minimal
- 2.2.8 Stabil
- 2.2.9 Einfach erweiterbar
- 2.3 Konnaszenz
- 2.4 Zusammenfassung
- 3 Allgemeines Vorgehen beim API-Design
- 3.1 Überblick
- 3.2 Heuristiken und Trade-offs
- 3.3 Anforderungen herausarbeiten
- 3.4 Wenn Use Cases nicht ausreichen
- 3.5 Entwurf mit Szenarien und Codebeispielen
- 3.6 Spezifikation erstellen
- 3.7 Reviews und Feedback
- 3.8 Wiederverwendung
- 3.9 Zusammenfassung
- Teil II Java-APIs
- 4 Ausprägungen
- 4.1 Implizite Objekt-API
- 4.2 Utility-Bibliothek
- 4.3 Service
- 4.4 Framework
- 4.5 Eine Frage der Priorität
- 4.6 Zusammenfassung
- 5 Grundlagen für Java-APIs
- 5.1 Auswahl passender Namen
- 5.1.1 Klassennamen
- 5.1.2 Methodennamen
- 5.1.3 Parameternamen
- 5.1.4 Ubiquitäre Sprache
- 5.1.5 Fazit
- 5.2 Effektiver Einsatz von Typen
- 5.2.1 Semantischen Vertrag minimieren
- 5.2.2 Semantische Verletzung der Datenkapselung vermeiden
- 5.2.3 Werden Namen überschätzt?
- 5.2.4 Fazit
- 5.3 Techniken für Objektkollaboration
- 5.3.1 Tell, Don't Ask
- 5.3.2 Command/Query Separation
- 5.3.3 Law of Demeter
- 5.3.4 Platzierung von Methoden
- 5.3.5 Fazit
- 5.4 Jigsaw-Module
- 5.5 Minimale Sichtbarkeit
- 5.5.1 Jigsaw-Module
- 5.5.2 Packages
- 5.5.3 Klassen
- 5.5.4 Methoden
- 5.5.5 Felder
- 5.5.6 Fazit
- 5.6 Optionale Hilfsmethoden
- 5.6.1 Komfort
- 5.6.2 Utility-Klassen
- 5.6.3 Fazit
- 5.7 Optionale Rückgabewerte
- 5.7.1 Ad-hoc-Fehlerbehandlung
- 5.7.2 Null-Objekte
- 5.7.3 Verwendung der Klasse java.util.Optional
- 5.7.4 Fazit
- 5.8 Exceptions
- 5.8.1 Ausnahmesituationen
- 5.8.2 Checked Exception versus Unchecked Exception
- 5.8.3 Passende Abstraktionen
- 5.8.4 Dokumentation von Exceptions
- 5.8.5 Vermeidung von Exceptions
- 5.8.6 Fazit
- 5.9 Objekterzeugung
- 5.9.1 Erzeugungsmuster der GoF
- 5.9.2 Statische Factory-Methode
- 5.9.3 Builder mit Fluent Interface
- 5.9.4 Praktische Anwendung der Erzeugungsmuster
- 5.9.5 Fazit
- 5.10 Vererbung
- 5.10.1 Ansätze zum Einsatz von Vererbung
- 5.10.2 Stolperfallen bei Vererbung
- 5.10.3 Bedeutung für API-Design
- 5.10.4 Fazit
- 5.11 Interfaces
- 5.11.1 Typen nachrüsten
- 5.11.2 Unterstützung für nicht triviale Interfaces
- 5.11.3 Markierungsschnittstellen
- 5.11.4 Funktionale Interfaces
- 5.11.5 Fazit
- 5.12 Zusammenfassung
- 6 Fortgeschrittene Techniken für Java-APIs
- 6.1 Fluent Interface
- 6.1.1 DSL-Grammatik
- 6.1.2 Schachteln versus Verketten
- 6.1.3 Fluent Interface von jOOQ
- 6.1.4 Ist der Aufwand gerechtfertigt?
- 6.1.5 Fazit
- 6.2 Template-Methoden
- 6.2.1 API versus SPI
- 6.2.2 Erweiterbare Parameter
- 6.2.3 Fazit
- 6.3 Callbacks
- 6.3.1 Synchrone Callbacks
- 6.3.2 Asynchrone Callbacks
- 6.3.3 Fazit
- 6.4 Annotationen
- 6.4.1 Auswertung zum Kompilierzeitpunkt
- 6.4.2 Auswertung zur Laufzeit
- 6.4.3 Fazit
- 6.5 Wrapper-Interfaces
- 6.5.1 Proxy
- 6.5.2 Adapter
- 6.5.3 Fassade
- 6.5.4 Fazit
- 6.6 Immutability
- 6.6.1 Wiederverwendung
- 6.6.2 Threadsicherheit
- 6.6.3 Einfachheit
- 6.6.4 Umsetzung
- 6.6.5 Automatische Überprüfung mit dem Mutability Detector
- 6.6.6 Codegenerierung mit Immutables
- 6.6.7 Fazit
- 6.7 Threadsichere APIs
- 6.7.1 Vorteile
- 6.7.2 Nachteile
- 6.7.3 Was bedeutet Threadsicherheit?
- 6.7.4 Fazit
- 6.8 Zusammenfassung
- 7 Kompatibilität von Java-APIs
- 7.1 Kompatibilitätsstufen
- 7.1.1 Codekompatibilität
- 7.1.2 Binäre Kompatibilität
- 7.1.3 Funktionale Kompatibilität
- 7.2 Verwandtschaftsbeziehungen
- 7.3 Design by Contract
- 7.4 Codeänderungen
- 7.4.1 Package-Änderungen
- 7.4.2 Interface-Änderungen
- 7.4.3 Klassenänderungen
- 7.4.4 Spezialisierung von Rückgabetypen
- 7.4.5 Generalisierung von Parametertypen
- 7.4.6 Generics
- 7.4.7 Ausnahmen
- 7.4.8 Statische Methoden und Konstanten
- 7.5 Praktische Techniken für API-Änderungen
- 7.6 Test Compatibility Kit
- 7.7 Zusammenfassung
- Teil III Remote-APIs
- 8 Grundlagen RESTful HTTP
- 8.1 REST versus HTTP
- 8.2 REST-Grundprinzipien
- 8.3 Ressourcen - die zentralen Bausteine
- 8.4 HTTP-Methoden
- 8.5 HATEOAS
- 8.6 Zusammenfassung
- 9 Techniken für Web-APIs
- 9.1 Anwendungsbeispiel: Onlineshop
- 9.2 URI-Design
- 9.3 Medientypen
- 9.4 Fehlerbehandlung
- 9.5 Versionierung
- 9.5.1 Daten- und Sprachversionierung
- 9.5.2 Kompatibilität und Perspektive
- 9.5.3 Versionsidentifikation
- 9.6 API-Sicherheit
- 9.6.1 API-Sicherheitsmechanismen
- 9.6.2 Authentifizierung
- 9.6.3 API-Keys
- 9.6.4 Distributed Denial of Service (DDoS)
- 9.6.5 Injection-Angriff
- 9.7 Partielle Rückgaben
- 9.8 GraphQL
- 9.9 OData
- 9.10 gRPC
- 9.11 Zusammenfassung
- 10 SOAP-Webservices
- 10.1 SOAP-Grundlagen
- 10.2 WSDL-Grundlagen
- 10.3 Entwurfsansätze und -muster
- 10.4 Versionierung
- 10.5 SOAP versus REST
- 10.6 Zusammenfassung
- 11 Messaging
- 11.1 Routenplanung für Lkw-Transporte (Teil 1)
- 11.2 Message Broker
- 11.3 Produkte
- 11.4 Standards und Protokolle
- 11.5 Routenplanung für Lkw-Transporte (Teil 2)
- 11.6 Transaktionen und garantierte Nachrichtenzustellung
- 11.7 Asynchrone Verarbeitung und REST
- 11.8 Push Notifications
- 11.9 Zusammenfassung
- Teil IV Übergreifende Themen
- 12 Dokumentation
- 12.1 Motivation
- 12.2 Zielgruppen unterscheiden
- 12.3 Allgemeiner Aufbau
- 12.4 Beispiele
- 12.5 Dokumentation von Java-APIs
- 12.6 Dokumentation von Web-APIs
- 12.7 Zusammenfassung
- 13 Caching
- 13.1 Anwendungsfälle
- 13.2 Performancevorteil
- 13.3 Verdrängungsstrategien
- 13.4 Cache-Strategien für Schreibzugriffe
- 13.5 Cache-Topologien für Webanwendungen
- 13.6 HTTP-Caching
- 13.7 Zusammenfassung
- 14 Skalierbarkeit
- 14.1 Anwendungsfall
- 14.2 Grundlagen
- 14.3 Load Balancing
- 14.4 Statuslose Kommunikation
- 14.5 Skalierung von Datenbanken
- 14.6 Skalierung von Messaging-Systemen
- 14.7 Architekturvarianten
- 14.8 Zusammenfassung
- 15 Erweiterte Architekturthemen
- 15.1 Consumer-Driven Contracts
- 15.2 Backends for Frontends
- 15.3 Vernachlässigte Frontend-Architektur
- 15.4 Netflix-APIs
- 15.5 Zusammenfassung
- 16 API-Management
- 16.1 Überblick
- 16.2 Funktionen einer API-Management-Plattform
- 16.3 API-Management-Architektur
- 16.4 Open-Source-Gateways
- 16.5 Zusammenfassung
- Anhang
- A Literaturverzeichnis
- Fußnoten
- Index
System requirements
File format: PDF
Copy protection: Watermark-DRM (Digital Rights Management)
System requirements:
- Computer (Windows; MacOS X; Linux): Use the free software Adobe Reader, Adobe Digital Editions, or any other PDF viewer of your choice (see eBook Help).
- Tablet/Smartphone (Android; iOS): Install the free app Adobe Digital Editions or another reading app for eBooks, e.g., PocketBook (see eBook Help).
- E-reader: Bookeen, Kobo, Pocketbook, Sony, Tolino and many more (only limited: Kindle).
The file format PDF always displays a book page identically on any hardware. This makes PDF suitable for complex layouts such as those used in textbooks and reference books (images, tables, columns, footnotes). Unfortunately, on the small screens of e-readers or smartphones, PDFs are rather annoying, requiring too much scrolling.
This eBook uses Watermark-DRM, a „soft” copy protection. This means that there are no technical restrictions to prevent illegal distribution. However, there is a personalised watermark embedded in the eBook that can be used to identify the purchaser of the eBook in the event of misuse and to provide evidence for legal purposes.
For more information, see our eBook Help page.