1
0
mirror of https://github.com/twirl/The-API-Book.git synced 2025-04-23 11:07:53 +02:00
The-API-Book/docs/index.html
2023-04-10 23:03:07 +03:00

166 lines
13 KiB
HTML

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<link rel="icon" type="image/png" href="assets/favicon.png" />
<title>
Sergey Konstantinov. The API
</title>
<meta
name="description"
content="API-first development is one of the hottest technical topics nowadays since many companies started to realize that API serves as a multiplicator to their opportunities—but it also amplifies the design mistakes as well. This book is written to share the expertise and describe the best practices in designing and developing APIs. It comprises six sections dedicated to: the API design, API patterns, maintaining backwards compatibility, HTTP API & REST, SDK and UI libraries, API product management."
/>
<meta property="og:type" content="article" />
<meta
property="og:title"
content="Sergey Konstantinov. The API"
/>
<meta
property="og:description"
content="API-first development is one of the hottest technical topics nowadays since many companies started to realize that API serves as a multiplicator to their opportunities—but it also amplifies the design mistakes as well. This book is written to share the expertise and describe the best practices in designing and developing APIs. It comprises six sections dedicated to: the API design, API patterns, maintaining backwards compatibility, HTTP API & REST, SDK and UI libraries, API product management."
/>
<meta property="og:image" content="assets/header.png" />
<meta
property="og:url"
content="https://github.com/twirl/The-API-Book"
/>
<link rel="stylesheet" href="assets/landing.css"/>
</head>
<body>
<nav>
<img
class="header"
src="assets/header.jpg"
alt="Sergey Konstantinov. The API"
/><br />
<h1>Sergey Konstantinov<br/><span class="title">The API</span></h1>
<h2>Free e-book</h2>
<br />Subscribe for updates on <a class="github" href="https://github.com/twirl/The-API-Book"></a>
<br/>Follow me on <a class="linkedin" href="https://www.linkedin.com/in/twirl/"></a> · <a class="twitter" href="https://twitter.com/blogovodoved"></a> · <a class="medium" href="https://twirl.medium.com/">Medium</a>
<br />Support this work on <a class="patreon" href="https://www.patreon.com/yatwirl">Patreon</a> · <a class="kindle" href="https://www.amazon.com/gp/product/B09RHH44S5/ref=dbs_a_def_rwt_hsch_vapi_tkin_p1_i0">buy Kindle version [1st edition]</a>
<br />Share: <a class="share share-facebook" href="https://www.facebook.com/sharer.php?u=https%3A%2F%2Ftwirl.github.io%2FThe-API-Book%2F" target="_blank"></a> · <a class="share share-twitter" href="https://twitter.com/intent/tweet?text=The%20API%20by%20Sergey%20Konstantinov%20%E2%80%94%20a%20book%20about%20designing%20APIs%2C%20extending%20them%20and%20finding%20a%20proper%20place%20in%20the%20market&url=https%3A%2F%2Ftwirl.github.io%2FThe-API-Book%2F&hashtags=API%2CTheAPIBook&via=blogovodoved" target="_blank"></a> · <a class="share share-linkedin" href="https://www.linkedin.com/sharing/share-offsite/?url=https%3A%2F%2Ftwirl.github.io%2FThe-API-Book%2F" target="_blank"></a> · <a class="share share-reddit" href="http://www.reddit.com/submit?url=https%3A%2F%2Ftwirl.github.io%2FThe-API-Book%2F&title=The%20API%20by%20Sergey%20Konstantinov%20%E2%80%94%20a%20book%20about%20designing%20APIs%2C%20extending%20them%20and%20finding%20a%20proper%20place%20in%20the%20market" target="_blank"></a><br/>⚙️⚙️⚙️
</nav>
<p>API-first development is one of the hottest technical topics nowadays since many companies started to realize that API serves as a multiplicator to their opportunities—but it also amplifies the design mistakes as well.</p>
<p>This book is written to share the expertise and describe the best practices in designing and developing APIs. It comprises six sections dedicated to:</p>
<ul><li>— the API design</li>
<li>— API patterns</li>
<li>— backwards compatibility</li>
<li>— HTTP API & REST</li>
<li>— SDK and UI libraries</li>
<li>— API product management.</ul>
<p>Illustration &amp; inspiration: <a href="https://www.instagram.com/art.mari.ka/">art.mari.ka</a>.</p>
<p>You might download ‘The API’ in <a href="API.en.pdf">PDF</a>, <a href="API.en.epub">EPUB</a>, or <a href="API.en.html">read it online</a>.
</p>
<h3>Table of Contents</h3>
<ul><li>
<h4><a href="API.en.html#section-1">Introduction</a></h4>
<ul>
<li><a href="API.en.html#intro-structure">Chapter 1. On the Structure of This Book</a></li>
<li><a href="API.en.html#intro-api-definition">Chapter 2. The API Definition</a></li>
<li><a href="API.en.html#intro-api-quality">Chapter 3. API Quality Criteria</a></li>
<li><a href="API.en.html#intro-back-compat">Chapter 4. On Backwards Compatibility</a></li>
<li><a href="API.en.html#intro-versioning">Chapter 5. On Versioning</a></li>
<li><a href="API.en.html#intro-terms-notation">Chapter 6. Terms and Notation Keys</a></li>
</ul>
</li>
<li>
<h4><a href="API.en.html#section-2">Section I. The API Design</a></h4>
<ul>
<li><a href="API.en.html#api-design-context-pyramid">Chapter 7. The API Contexts Pyramid</a></li>
<li><a href="API.en.html#api-design-defining-field">Chapter 8. Defining an Application Field</a></li>
<li><a href="API.en.html#api-design-separating-abstractions">Chapter 9. Separating Abstraction Levels</a></li>
<li><a href="API.en.html#api-design-isolating-responsibility">Chapter 10. Isolating Responsibility Areas</a></li>
<li><a href="API.en.html#api-design-describing-interfaces">Chapter 11. Describing Final Interfaces</a></li>
<li><a href="API.en.html#api-design-annex">Chapter 12. Annex to Section I. Generic API Example</a></li>
</ul>
</li>
<li>
<h4><a href="API.en.html#section-3">[Work in Progress] Section II. The API Patterns</a></h4>
<ul>
<li><a href="API.en.html#chapter-13">Chapter 13. On Design Patterns in the API Context</a></li>
<li><a href="API.en.html#chapter-14">Chapter 14. Authenticating Partners and Authorizing API Calls</a></li>
<li><a href="API.en.html#chapter-15">Chapter 15. Synchronization Strategies</a></li>
<li><a href="API.en.html#chapter-16">Chapter 16. Eventual Consistency</a></li>
<li><a href="API.en.html#chapter-17">Chapter 17. Asynchronicity and Time Management</a></li>
<li><a href="API.en.html#chapter-18">Chapter 18. Lists and Accessing Them</a></li>
<li><a href="API.en.html#chapter-19">Chapter 19. Bidirectional Data Flows. Push and Poll Models</a></li>
<li><a href="API.en.html#chapter-20">Chapter 20. Organization of Notification Systems</a></li>
<li><a href="API.en.html#chapter-21">Chapter 21. Atomicity</a></li>
<li><a href="API.en.html#chapter-22">Chapter 22. Partial Updates</a></li>
<li><a href="API.en.html#chapter-23">Chapter 23. Degradation and Predictability</a></li>
</ul>
</li>
<li>
<h4><a href="API.en.html#section-4">Section III. The Backwards Compatibility</a></h4>
<ul>
<li><a href="API.en.html#back-compat-statement">Chapter 24. The Backwards Compatibility Problem Statement</a></li>
<li><a href="API.en.html#back-compat-iceberg-waterline">Chapter 25. On the Waterline of the Iceberg</a></li>
<li><a href="API.en.html#back-compat-abstracting-extending">Chapter 26. Extending through Abstracting</a></li>
<li><a href="API.en.html#back-compat-strong-coupling">Chapter 27. Strong Coupling and Related Problems</a></li>
<li><a href="API.en.html#back-compat-weak-coupling">Chapter 28. Weak Coupling</a></li>
<li><a href="API.en.html#back-compat-universal-interfaces">Chapter 29. Interfaces as a Universal Pattern</a></li>
<li><a href="API.en.html#back-compat-serenity-notepad">Chapter 30. The Serenity Notepad</a></li>
</ul>
</li>
<li>
<h4><a href="API.en.html#section-5">[Work in Progress] Section IV. The HTTP API & REST</a></h4>
<ul>
<li><a href="API.en.html#chapter-31">Chapter 31. On HTTP API Concept and Terminology</a></li>
<li><a href="API.en.html#chapter-32">Chapter 32. The REST Myth</a></li>
<li><a href="API.en.html#chapter-33">Chapter 33. The Semantics of the HTTP Request Components</a></li>
<li><a href="API.en.html#chapter-34">Chapter 34. The HTTP API Advantages and Disadvantages</a></li>
<li><a href="API.en.html#chapter-35">Chapter 35. HTTP API Organization Principles</a></li>
<li><a href="API.en.html#chapter-36">Chapter 36. Working with HTTP API Errors</a></li>
<li><a href="API.en.html#chapter-37">Chapter 37. Organizing the HTTP API Resources and Operations</a></li>
<li><a href="API.en.html#chapter-38">Chapter 38. Final Provisions and General Recommendations</a></li>
</ul>
</li>
<li>
<h4><a href="API.en.html#section-6">[Work in Progress] Section V. The SDK & UI Libraries</a></h4>
<ul>
<li><a href="API.en.html#chapter-39">Chapter 39. On the Content of This Section</a></li>
<li><a href="API.en.html#chapter-40">Chapter 40. The SDK: Problems and Solutions</a></li>
<li><a href="API.en.html#chapter-41">Chapter 41. The Code Generation Pattern</a></li>
<li><a href="API.en.html#chapter-42">Chapter 42. The UI Components</a></li>
<li><a href="API.en.html#chapter-43">Chapter 43. Decomposing UI Components</a></li>
<li><a href="API.en.html#chapter-44">Chapter 44. The MV* Frameworks</a></li>
<li><a href="API.en.html#chapter-45">Chapter 45. The Backend-Driven UI</a></li>
<li><a href="API.en.html#chapter-46">Chapter 46. Shared Resources and Asynchronous Locks</a></li>
<li><a href="API.en.html#chapter-47">Chapter 47. Computed Properties</a></li>
<li><a href="API.en.html#chapter-48">Chapter 48. Conclusion</a></li>
</ul>
</li>
<li>
<h4><a href="API.en.html#section-7">Section VI. The API Product</a></h4>
<ul>
<li><a href="API.en.html#api-product">Chapter 49. API as a Product</a></li>
<li><a href="API.en.html#api-product-business-models">Chapter 50. The API Business Models</a></li>
<li><a href="API.en.html#api-product-vision">Chapter 51. Developing a Product Vision</a></li>
<li><a href="API.en.html#api-product-devrel">Chapter 52. Communicating with Developers</a></li>
<li><a href="API.en.html#api-product-business-comms">Chapter 53. Communicating with Business Owners</a></li>
<li><a href="API.en.html#api-product-range">Chapter 54. The API Services Range</a></li>
<li><a href="API.en.html#api-product-kpi">Chapter 55. The API Key Performance Indicators</a></li>
<li><a href="API.en.html#api-product-antifraud">Chapter 56. Identifying Users and Preventing Fraud</a></li>
<li><a href="API.en.html#api-product-tos-violations">Chapter 57. The Technical Means of Preventing ToS Violations</a></li>
<li><a href="API.en.html#api-product-customer-support">Chapter 58. Supporting customers</a></li>
<li><a href="API.en.html#api-product-documentation">Chapter 59. The Documentation</a></li>
<li><a href="API.en.html#api-product-testing">Chapter 60. The Testing Environment</a></li>
<li><a href="API.en.html#api-product-expectations">Chapter 61. Managing Expectations</a></li>
</ul>
</li>
</ul>
<p>This book is distributed under the <a href="http://creativecommons.org/licenses/by-nc/4.0/">Creative Commons Attribution-NonCommercial 4.0 International licence</a>.</p>
<p>Source code available at <a href="https://github.com/twirl/The-API-Book">github.com/twirl/The-API-Book</a></p>
<h3><a name="about-author">About the Author</a></h3>
<section class="about-me">
<aside><img src="https://konstantinov.cc/static/me.png"/><br/>Photo by <a href="http://linkedin.com/in/zloylos/">Denis Hananein</a></aside>
<div class="content">
<p>Sergey Konstantinov has been working with APIs for more than a decade. He started his career as a software engineer in the Maps API division at Yandex and eventually became the head of the service, being responsible for both technical architecture and product management.</p>
<p>During this tenure, Sergey got a unique experience in building world-class APIs with a daily audience of tens of millions, planning roadmaps for such a service, and giving numerous public speeches. He also worked for a year and a half as a member of the W3C Technical Architecture Group.</p>
<p>After nine years in Maps, Sergey switched to technical-lead roles in other departments and companies, leading integration efforts and being responsible for the technical architecture of entire business units. Today, Sergey lives in Tallinn, Estonia, and works as a staff software engineer at Bolt.</p></div>
</section>
<p>Книгу «API» можно <a href="index.ru.html">читать по-русски</a>.</p>
</body>
</html>