Автор: Olaf Zimmermann, Mirko Stocker, Daniel Lubke
Издательство: Addison-Wesley Professional/Pearson Education
Год: 2023
Страниц: 545
Язык: английский
Формат: pdf (true), epub (true)
Размер: 22.3 MB
Proven Patterns for Designing Evolvable High-Quality APIs--For Any Domain, Technology, or Platform.
APIs enable breakthrough innovation and digital transformation in organizations and ecosystems of all kinds. To create user-friendly, reliable and well-performing APIs, architects, designers, and developers need expert design guidance. This practical guide cuts through the complexity of API conversations and their message contents, introducing comprehensive guidelines and heuristics for designing APIs sustainably and specifying them clearly, for whatever technologies or platforms you use.
In Patterns for API Design: Simplifying Integration with Loosely Coupled Message Exchanges, five expert architects and developers cover the entire API lifecycle, from launching projects and establishing goals through defining requirements, elaborating designs, planning evolution, and creating useful documentation. They crystallize the collective knowledge of many practitioners into 44 API design patterns, consistently explained with context, pros and cons, conceptual solutions, and concrete examples. To make their pattern language accessible, they present a domain model, a running case study, decision narratives with pattern selection options and criteria, and walkthroughs of real-world projects applying the patterns in two different industries.
Humans communicate in many different languages. The same holds for software. Software not only is written in various programming languages but also communicates via a plethora of protocols (such as HTTP) and message exchange formats (such as JSON). HTTP, JSON, and other technologies operate every time somebody updates their social network profile, orders something in a Web shop, swipes their credit card to purchase something, and so on:
• Application frontends, such as mobile apps on smartphones, place requests for transaction processing at their backends, such as purchase orders in online shops.
• Application parts exchange long-lived data such as customer profiles or product catalogs with each other and with the systems of business partners, customers, and suppliers.
• Application backends provide external services such as payment gateways or cloud storage with data and metadata.
The software components involved in these scenarios—large, small, and in-between—talk to others to achieve their individual goals while jointly serving end users. The software engineer’s response to this distribution challenge is application integration via application programming interfaces (APIs). Every integration scenario involves at least two communication parties: API client and API provider. API clients consume the services exposed by API providers. API documentation governs the client-provider interactions.
Just like humans, software components often struggle to understand each other when they communicate; it is hard for their designers to decide on an adequate size and structure of message content and agree on the best-suited conversation style. Neither party wants to be too quiet or overly talkative when articulating its needs or responding to requests. Some application integration and API designs work very well; the involved parties understand each other and reach their goals. They interoperate effectively and efficiently. Others lack clarity and thereby confuse or stress participants; verbose messages and chatty conversations may overload the communication channels, introduce unnecessary technical risk, and cause extra work in development and operations.
Identify and overcome API design challenges with patterns
Size your endpoint types and operations adequately
Design request and response messages and their representations
Refine your message design for quality
Plan to evolve your APIs
Document and communicate your API contracts
Combine patterns to solve real-world problems and make the right tradeoffs
Application programming interfaces (API) are among the top priority elements to help manage many of the trade-offs involved in system design, in particular distributed systems, which increasingly dominate our software ecosystem. In my experience, this book removes the complexities in understanding and designing APIs with concepts accessible to both practicing engineers and those who are just starting their software engineering and architecting journey. All who aspire to play a key role in system design should understand the API design concepts and patterns presented in this book.”
—Ipek Ozkaya Technical Director, Engineering Intelligence Software System Software Solutions Division Carnegie Mellon University Software Engineering Institute
“This comprehensive collection of API patterns is an invaluable resource for software engineers and architects designing interoperable software systems. The introduction into API fundamentals and numerous case study examples make it excellent teaching material for future software engineers. Many of the patterns discussed in this book are extremely useful in practice and were applied to design the APIs of integrated, mission-critical rail operations centre systems.”
—Andrei Furda, Senior Software Engineer at Hitachi Rail STS Australia
Скачать Patterns for API Design: Simplifying Integration with Loosely Coupled Message Exchanges (Final release)