2022-07-07 00:41:03 +03:00
2022-06-23 23:28:55 +03:00
<!DOCTYPE html>
< html >
2022-07-07 00:41:03 +03:00
< head >
< meta charset = "utf-8" / >
< meta name = "viewport" content = "width=device-width, initial-scale=1" / >
2022-07-10 23:34:14 +03:00
< link rel = "icon" type = "image/png" href = "assets/favicon.png" / >
2022-07-07 00:41:03 +03:00
< title >
Sergey Konstantinov. The API
< / title >
< meta
name="description"
2023-07-02 20:53:18 +03:00
content="API-first development is one of the hottest technical topics nowadays since many companies have started to realize that APIs serves as a multiplier to their opportunities — but it amplifies the design mistakes as well. This book is written to share expertise and describe best practices in designing and developing APIs. It comprises six sections dedicated to the following topics: the API design, API patterns, maintaining backward compatibility, HTTP APIs & the REST architectural principles, SDKs and UI libraries, API product management."
2022-07-07 00:41:03 +03:00
/>
< meta property = "og:type" content = "article" / >
< meta
property="og:title"
content="Sergey Konstantinov. The API"
/>
< meta
property="og:description"
2023-07-02 20:53:18 +03:00
content="API-first development is one of the hottest technical topics nowadays since many companies have started to realize that APIs serves as a multiplier to their opportunities — but it amplifies the design mistakes as well. This book is written to share expertise and describe best practices in designing and developing APIs. It comprises six sections dedicated to the following topics: the API design, API patterns, maintaining backward compatibility, HTTP APIs & the REST architectural principles, SDKs and UI libraries, API product management."
2022-07-07 00:41:03 +03:00
/>
< meta property = "og:image" content = "assets/header.png" / >
< meta
property="og:url"
content="https://github.com/twirl/The-API-Book"
/>
2022-07-31 15:08:37 +03:00
< link rel = "stylesheet" href = "assets/landing.css" / >
2022-07-07 00:41:03 +03:00
< / head >
< body >
< nav >
< img
2022-07-31 15:08:37 +03:00
class="header"
2022-07-07 00:41:03 +03:00
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 >
2023-04-30 23:13:11 +03:00
< 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 = "substack" href = "https://twirl.substack.com/" > Substack< / a >
2023-04-10 23:03:07 +03:00
< 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 >
2022-08-27 23:07:11 +03:00
< 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 / > ⚙️⚙️⚙️
2022-07-07 00:41:03 +03:00
< / nav >
2023-05-28 20:06:49 +03:00
< p > API-first development is one of the hottest technical topics nowadays since many companies have started to realize that APIs serves as a multiplier to their opportunities — but it amplifies the design mistakes as well.< / p >
< p > This book is written to share expertise and describe best practices in designing and developing APIs. It comprises six sections dedicated to the following topics:< / p >
2023-04-25 10:35:00 +03:00
< ul > < li > — The API design< / li >
2023-04-10 23:03:07 +03:00
< li > — API patterns< / li >
2023-04-29 21:10:34 +03:00
< li > — Backward compatibility< / li >
2023-07-02 20:53:18 +03:00
< li > — HTTP APIs & the REST architectural principles< / li >
2023-06-16 09:40:24 +03:00
< li > — SDKs and UI libraries< / li >
2023-04-10 23:03:07 +03:00
< li > — API product management.< / ul >
2022-07-31 15:08:37 +03:00
< p > Illustration & inspiration: < a href = "https://www.instagram.com/art.mari.ka/" > art.mari.ka< / a > .< / p >
2023-04-30 23:13:11 +03:00
< 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 > .
2022-07-07 00:41:03 +03:00
< / p >
< h3 > Table of Contents< / h3 >
< ul > < li >
< h4 > < a href = "API.en.html#section-1" > Introduction< / a > < / h4 >
2022-06-23 23:28:55 +03:00
< ul >
2023-04-07 19:56:48 +03:00
< 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 >
2023-07-03 10:35:09 +03:00
< li > < a href = "API.en.html#intro-api-solutions-overview" > Chapter 3. An Overview of Existing API Development Solutions< / a > < / li >
2023-04-25 10:35:00 +03:00
< li > < a href = "API.en.html#intro-api-quality" > Chapter 4. API Quality Criteria< / a > < / li >
2023-05-15 09:56:39 +03:00
< li > < a href = "API.en.html#intro-api-first-approach" > Chapter 5. The API-First Approach< / a > < / li >
2023-04-29 21:10:34 +03:00
< li > < a href = "API.en.html#intro-back-compat" > Chapter 6. On Backward Compatibility< / a > < / li >
2023-04-25 10:35:00 +03:00
< li > < a href = "API.en.html#intro-versioning" > Chapter 7. On Versioning< / a > < / li >
< li > < a href = "API.en.html#intro-terms-notation" > Chapter 8. Terms and Notation Keys< / a > < / li >
2022-07-07 00:41:03 +03:00
< / ul >
2022-06-23 23:28:55 +03:00
< / li >
2022-07-07 00:41:03 +03:00
< li >
< h4 > < a href = "API.en.html#section-2" > Section I. The API Design< / a > < / h4 >
2022-06-23 23:28:55 +03:00
< ul >
2023-04-25 10:35:00 +03:00
< li > < a href = "API.en.html#api-design-context-pyramid" > Chapter 9. The API Contexts Pyramid< / a > < / li >
< li > < a href = "API.en.html#api-design-defining-field" > Chapter 10. Defining an Application Field< / a > < / li >
< li > < a href = "API.en.html#api-design-separating-abstractions" > Chapter 11. Separating Abstraction Levels< / a > < / li >
< li > < a href = "API.en.html#api-design-isolating-responsibility" > Chapter 12. Isolating Responsibility Areas< / a > < / li >
< li > < a href = "API.en.html#api-design-describing-interfaces" > Chapter 13. Describing Final Interfaces< / a > < / li >
< li > < a href = "API.en.html#api-design-annex" > Chapter 14. Annex to Section I. Generic API Example< / a > < / li >
2022-07-07 00:41:03 +03:00
< / ul >
2022-06-23 23:28:55 +03:00
< / li >
2022-07-07 00:41:03 +03:00
< li >
2023-05-28 20:06:49 +03:00
< h4 > < a href = "API.en.html#section-3" > Section II. The API Patterns< / a > < / h4 >
2022-06-23 23:28:55 +03:00
< ul >
2023-04-25 10:35:00 +03:00
< li > < a href = "API.en.html#api-patterns-context" > Chapter 15. On Design Patterns in the API Context< / a > < / li >
< li > < a href = "API.en.html#api-patterns-aa" > Chapter 16. Authenticating Partners and Authorizing API Calls< / a > < / li >
< li > < a href = "API.en.html#api-patterns-sync-strategies" > Chapter 17. Synchronization Strategies< / a > < / li >
2023-04-28 10:15:37 +03:00
< li > < a href = "API.en.html#api-patterns-weak-consistency" > Chapter 18. Eventual Consistency< / a > < / li >
2023-05-06 17:40:40 +03:00
< li > < a href = "API.en.html#api-patterns-async" > Chapter 19. Asynchronicity and Time Management< / a > < / li >
< li > < a href = "API.en.html#api-patterns-lists" > Chapter 20. Lists and Accessing Them< / a > < / li >
2023-05-12 09:18:35 +03:00
< li > < a href = "API.en.html#api-patterns-push-vs-poll" > Chapter 21. Bidirectional Data Flows. Push and Poll Models< / a > < / li >
2023-05-15 10:01:39 +03:00
< li > < a href = "API.en.html#api-patterns-async-event-processing" > Chapter 22. Multiplexing Notifications. Asynchronous Event Processing< / a > < / li >
2023-05-23 00:22:07 +03:00
< li > < a href = "API.en.html#api-patterns-atomicity" > Chapter 23. Atomicity of Bulk Changes< / a > < / li >
2023-05-26 09:00:20 +03:00
< li > < a href = "API.en.html#api-patterns-partial-updates" > Chapter 24. Partial Updates< / a > < / li >
< li > < a href = "API.en.html#api-patterns-degrading" > Chapter 25. Degradation and Predictability< / a > < / li >
2022-07-07 00:41:03 +03:00
< / ul >
2022-06-23 23:28:55 +03:00
< / li >
2022-07-07 00:41:03 +03:00
< li >
2023-04-29 21:10:34 +03:00
< h4 > < a href = "API.en.html#section-4" > Section III. The Backward Compatibility< / a > < / h4 >
2022-06-23 23:28:55 +03:00
< ul >
2023-04-29 21:10:34 +03:00
< li > < a href = "API.en.html#back-compat-statement" > Chapter 26. The Backward Compatibility Problem Statement< / a > < / li >
2023-04-25 10:35:00 +03:00
< li > < a href = "API.en.html#back-compat-iceberg-waterline" > Chapter 27. On the Waterline of the Iceberg< / a > < / li >
< li > < a href = "API.en.html#back-compat-abstracting-extending" > Chapter 28. Extending through Abstracting< / a > < / li >
< li > < a href = "API.en.html#back-compat-strong-coupling" > Chapter 29. Strong Coupling and Related Problems< / a > < / li >
< li > < a href = "API.en.html#back-compat-weak-coupling" > Chapter 30. Weak Coupling< / a > < / li >
< li > < a href = "API.en.html#back-compat-universal-interfaces" > Chapter 31. Interfaces as a Universal Pattern< / a > < / li >
< li > < a href = "API.en.html#back-compat-serenity-notepad" > Chapter 32. The Serenity Notepad< / a > < / li >
2023-04-10 00:51:45 +03:00
< / ul >
< / li >
< li >
2023-07-02 20:53:18 +03:00
< h4 > < a href = "API.en.html#section-5" > Section IV. HTTP APIs & the REST Architectural Principles< / a > < / h4 >
2023-04-10 00:51:45 +03:00
< ul >
2023-06-04 21:48:06 +03:00
< li > < a href = "API.en.html#http-api-concepts" > Chapter 33. On the HTTP API Concept and Terminology< / a > < / li >
2023-07-02 20:42:13 +03:00
< li > < a href = "API.en.html#http-api-pros-and-cons" > Chapter 34. Advantages and Disadvantages of HTTP APIs Compared to Alternative Technologies< / a > < / li >
< li > < a href = "API.en.html#http-api-rest-myth" > Chapter 35. The REST Myth< / a > < / li >
< li > < a href = "API.en.html#http-api-requests-semantics" > Chapter 36. Components of an HTTP Request and Their Semantics< / a > < / li >
2023-06-16 10:44:05 +03:00
< li > < a href = "API.en.html#http-api-rest-organizing" > Chapter 37. Organizing HTTP APIs Based on the REST Principles< / a > < / li >
2023-07-03 10:35:09 +03:00
< li > < a href = "API.en.html#http-api-urls-crud" > Chapter 38. Designing a Nomenclature of URLs. The CRUD Operations< / a > < / li >
2023-07-02 15:54:07 +03:00
< li > < a href = "API.en.html#http-api-errors" > Chapter 39. Working with HTTP API Errors< / a > < / li >
< li > < a href = "API.en.html#http-api-final-recommendations" > Chapter 40. Final Provisions and General Recommendations< / a > < / li >
2023-04-10 00:51:45 +03:00
< / ul >
< / li >
< li >
2023-06-16 09:40:24 +03:00
< h4 > < a href = "API.en.html#section-6" > [Work in Progress] Section V. SDKs & UI Libraries< / a > < / h4 >
2023-04-10 00:51:45 +03:00
< ul >
2023-07-05 11:12:07 +03:00
< li > < a href = "API.en.html#sdks-toc" > Chapter 41. On the Content of This Section< / a > < / li >
2023-04-25 10:35:00 +03:00
< li > < a href = "API.en.html#chapter-42" > Chapter 42. The SDK: Problems and Solutions< / a > < / li >
< li > < a href = "API.en.html#chapter-43" > Chapter 43. The Code Generation Pattern< / a > < / li >
< li > < a href = "API.en.html#chapter-44" > Chapter 44. The UI Components< / a > < / li >
< li > < a href = "API.en.html#chapter-45" > Chapter 45. Decomposing UI Components< / a > < / li >
< li > < a href = "API.en.html#chapter-46" > Chapter 46. The MV* Frameworks< / a > < / li >
< li > < a href = "API.en.html#chapter-47" > Chapter 47. The Backend-Driven UI< / a > < / li >
< li > < a href = "API.en.html#chapter-48" > Chapter 48. Shared Resources and Asynchronous Locks< / a > < / li >
< li > < a href = "API.en.html#chapter-49" > Chapter 49. Computed Properties< / a > < / li >
< li > < a href = "API.en.html#chapter-50" > Chapter 50. Conclusion< / a > < / li >
2023-04-10 00:51:45 +03:00
< / ul >
< / li >
< li >
< h4 > < a href = "API.en.html#section-7" > Section VI. The API Product< / a > < / h4 >
< ul >
2023-07-03 10:35:09 +03:00
< li > < a href = "API.en.html#api-product" > Chapter 51. The API as a Product< / a > < / li >
< li > < a href = "API.en.html#api-product-business-models" > Chapter 52. API Business Models< / a > < / li >
2023-04-25 10:35:00 +03:00
< li > < a href = "API.en.html#api-product-vision" > Chapter 53. Developing a Product Vision< / a > < / li >
< li > < a href = "API.en.html#api-product-devrel" > Chapter 54. Communicating with Developers< / a > < / li >
< li > < a href = "API.en.html#api-product-business-comms" > Chapter 55. Communicating with Business Owners< / a > < / li >
2023-07-03 10:35:09 +03:00
< li > < a href = "API.en.html#api-product-range" > Chapter 56. An API Services Range< / a > < / li >
< li > < a href = "API.en.html#api-product-kpi" > Chapter 57. API Key Performance Indicators< / a > < / li >
2023-04-25 10:35:00 +03:00
< li > < a href = "API.en.html#api-product-antifraud" > Chapter 58. Identifying Users and Preventing Fraud< / a > < / li >
< li > < a href = "API.en.html#api-product-tos-violations" > Chapter 59. The Technical Means of Preventing ToS Violations< / a > < / li >
< li > < a href = "API.en.html#api-product-customer-support" > Chapter 60. Supporting customers< / a > < / li >
< li > < a href = "API.en.html#api-product-documentation" > Chapter 61. The Documentation< / a > < / li >
2023-07-03 10:35:09 +03:00
< li > < a href = "API.en.html#api-product-testing" > Chapter 62. Testing Environments< / a > < / li >
2023-04-25 10:35:00 +03:00
< li > < a href = "API.en.html#api-product-expectations" > Chapter 63. Managing Expectations< / a > < / li >
2022-07-07 00:41:03 +03:00
< / ul >
2022-06-23 23:28:55 +03:00
< / li >
2022-07-07 00:41:03 +03:00
< / 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 >
2022-07-31 15:08:37 +03:00
< h3 > < a name = "about-author" > About the Author< / a > < / h3 >
< section class = "about-me" >
2022-08-13 16:00:49 +03:00
< aside > < img src = "https://konstantinov.cc/static/me.png" / > < br / > Photo by < a href = "http://linkedin.com/in/zloylos/" > Denis Hananein< / a > < / aside >
2022-07-31 15:08:37 +03:00
< div class = "content" >
2023-05-28 20:06:49 +03:00
< p > Sergey Konstantinov has been working with APIs for over a decade. He began his career as a software engineer in the Maps API division at Yandex and eventually became the head of the service. In this role, he was responsible for both technical architecture and product management.< / p >
< p > During this tenure, Sergey gained unique experience in building world-class APIs with a daily audience of tens of millions, planning roadmaps for such a service, and delivering numerous public speeches. Additionaly, he served as a member of the W3C Technical Architecture Group for a year and a half.< / p >
< p > After being nine years in Maps, Sergey transitioned to technical lead roles in other departments and companies. In these positions, he led integration efforts and was responsible for the technical architecture of entire business units. Currently, Sergey resides in Tallinn, Estonia, and works as a staff software engineer at Bolt.< / p > < / div >
2022-07-31 15:08:37 +03:00
< / section >
< p > Книгу «API» можно < a href = "index.ru.html" > читать по-русски< / a > .< / p >
2022-07-07 00:41:03 +03:00
< / body >
< / html >