1
0
mirror of https://github.com/twirl/The-API-Book.git synced 2024-11-30 08:06:47 +02:00

Landing Page

This commit is contained in:
Sergey Konstantinov 2022-06-23 23:28:55 +03:00
parent c994d502da
commit 893630a61d
13 changed files with 668 additions and 21 deletions

View File

@ -1,27 +1,8 @@
# The API Book
# [Read ‘The API’ Book by Sergey Konstantinov](https://twirl.github.io/The-API-Book)
# [Читать книгу ‘The API’ Сергея Константинова](https://twirl.github.io/The-API-Book/index.ru.html)
This is the working repository for ‘The API’ book written by Sergey Konstantinov ([email](mailto:twirl-team@yandex.ru), [Linkedin profile](https://linkedin.com/in/twirl)).
Designing APIs is a very special skill: API is a multiplier to both your opportunities and mistakes. This book is written to share the expertise and describe the best practices in the API design. In Section I, we'll discuss designing APIs as a concept: how to build the architecture properly, from high-level planning down to final interfaces. Section II is dedicated to expanding existing APIs in a backwards-compatible manner.
You may find `.html`, `.epub` or `.pdf` version of the book in the `docs` folder, or read it online.
* In English: [html](https://twirl.github.io/The-API-Book/docs/API.en.html), [epub](https://twirl.github.io/The-API-Book/docs/API.en.epub), [pdf](https://twirl.github.io/The-API-Book/docs/API.en.pdf)
* In Russian: [html](https://twirl.github.io/The-API-Book/docs/API.ru.html), [epub](https://twirl.github.io/The-API-Book/docs/API.ru.epub), [pdf](https://twirl.github.io/The-API-Book/docs/API.ru.pdf)
You might support this work [on Patreon](https://www.patreon.com/yatwirl). Also, the [Kindle version](https://www.amazon.com/gp/product/B09RHH44S5/ref=dbs_a_def_rwt_hsch_vapi_tkin_p1_i0) (priced at 6$) exists, though I have to warn you that its formatting suffers because of Amazon epub conversion oddities.
Pre-compiled books above comprise clean-copy texts only. Drafts could be found in the `src` folder. Complete new chapter drafts will be published on:
* my [medium](https://twirl.medium.com/) blog in English;
* my [habr](https://habr.com/ru/users/forgotten/posts/) blog in Russian.
I'd appreciate if you share them on reddit, for I personally can't do that: reddit bans me for ‘self-promotion’.
The work is distributed under a Creative Commons Attribution-NonCommercial 4.0 license, meaning in general that you're totally free to use this book in any manner while complying with two rules:
* you're not getting commercial profit from the book;
* you're not forgetting to mention the author properly.
See full license in LICENSE.md file or at [Creative Commons Website](http://creativecommons.org/licenses/by-nc/4.0/).
## Current State and the Roadmap
Right now Section I (‘API Design’) and Section II (‘Backwards Compatibility’) are finished. The Sections are lacking readable schemes, I'll draw them later.

Binary file not shown.

Binary file not shown.

BIN
docs/assets/favicon.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 90 KiB

BIN
docs/assets/github.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 50 KiB

BIN
docs/assets/habr.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

BIN
docs/assets/header.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 291 KiB

BIN
docs/assets/linkedin.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.2 KiB

BIN
docs/assets/medium.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 62 KiB

BIN
docs/assets/patreon.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 60 KiB

16
docs/assets/twitter.svg Normal file
View File

@ -0,0 +1,16 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 24.2.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg version="1.1" id="Logo" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
viewBox="0 0 248 204" style="enable-background:new 0 0 248 204;" xml:space="preserve">
<style type="text/css">
.st0{fill:#1D9BF0;}
</style>
<g id="Logo_1_">
<path id="white_background" class="st0" d="M221.95,51.29c0.15,2.17,0.15,4.34,0.15,6.53c0,66.73-50.8,143.69-143.69,143.69v-0.04
C50.97,201.51,24.1,193.65,1,178.83c3.99,0.48,8,0.72,12.02,0.73c22.74,0.02,44.83-7.61,62.72-21.66
c-21.61-0.41-40.56-14.5-47.18-35.07c7.57,1.46,15.37,1.16,22.8-0.87C27.8,117.2,10.85,96.5,10.85,72.46c0-0.22,0-0.43,0-0.64
c7.02,3.91,14.88,6.08,22.92,6.32C11.58,63.31,4.74,33.79,18.14,10.71c25.64,31.55,63.47,50.73,104.08,52.76
c-4.07-17.54,1.49-35.92,14.61-48.25c20.34-19.12,52.33-18.14,71.45,2.19c11.31-2.23,22.15-6.38,32.07-12.26
c-3.77,11.69-11.66,21.62-22.2,27.93c10.01-1.18,19.79-3.86,29-7.95C240.37,35.29,231.83,44.14,221.95,51.29z"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 1.1 KiB

322
docs/index.html Normal file
View File

@ -0,0 +1,322 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<link rel="icon" type="image/jpg" href="assets/favicon.png" />
<title>‘The API’ — a free e-book by Sergey Konstantinov</title>
<meta
name="description"
content="Designing APIs is a very special skill: API is a multiplier to both
your opportunities and mistakes. This book is written to share the
expertise and describe the best practices in the API design and API
product management"
/>
<meta property="og:type" content="article" />
<meta
property="og:title"
content="‘The API’ — a free e-book by Sergey Konstantinov"
/>
<meta
property="og:description"
content="Designing APIs is a very special skill: API is a multiplier to both
your opportunities and mistakes. This book is written to share the
expertise and describe the best practices in the API design and API
product management"
/>
<meta property="og:image" content="assets/header.png" />
<meta
property="og:url"
content="https://twirl.github.io/The-API-Book/"
/>
<style>
@font-face {
font-family: local-serif;
src: url(assets/PTSerif-Regular.ttf);
}
@font-face {
font-family: local-serif;
src: url(assets/PTSerif-Bold.ttf);
font-weight: bold;
}
* {
margin: 0;
padding: 0;
border: none;
font-family: local-serif, Arial, Helvetica, sans-serif;
font-size: 24px;
list-style-type: none;
}
ul > li {
padding-left: 1em;
}
p {
margin: 1em 0;
}
body {
margin: 5px;
}
nav {
text-align: center;
}
nav a {
vertical-align: -12%;
content: ' ';
width: 1em;
height: 1em;
display: inline-block;
background-position: 0 0;
background-size: auto 100%;
background-repeat: no-repeat;
text-decoration: none;
}
a.github {
background-image: url(assets/github.jpg);
width: 1.2em;
}
a.linkedin {
background-image: url(assets/linkedin.png);
width: 1.176em;
}
a.twitter {
background-image: url(assets/twitter.svg);
width: 1.392em;
}
a.patreon,
a.medium {
width: auto;
padding-left: 1em;
vertical-align: baseline;
background-position: 0 0.2em;
}
a.patreon {
background-image: url(assets/patreon.png);
}
a.medium {
background-image: url(assets/medium.png);
padding-left: 1.3em;
background-size: 1.42em 1em;
}
body img {
width: 100%;
max-width: 1000px;
}
@media (min-width: 1010px) {
body {
width: 1000px;
margin: 5px auto;
text-align: justify;
}
}
@media (min-width: 2000px) {
body {
width: auto;
margin: 5px 25%;
text-align: justify;
}
}
</style>
</head>
<body>
<nav>
<img
src="assets/header.jpg"
alt="‘The API’ — a free e-book by Sergey Konstantinov"
/><br />
‘The API’ — a free e-book by Sergey Konstantinov<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
&middot; <a
class="twitter"
href="https://twitter.com/blogovodoved"
></a
&middot; <a class="medium" href="https://twirl.medium.com/"
>Medium</a
><br />You can support this work on
<a class="patreon" href="https://www.patreon.com/yatwirl">Patreon</a
> or <a
href="https://www.amazon.com/gp/product/B09RHH44S5/ref=dbs_a_def_rwt_hsch_vapi_tkin_p1_i0"
>buy Kindle version</a
>
<br />⚙️⚙️⚙️
</nav>
<p>
Designing APIs is a very special skill: API is a multiplier to both
your opportunities and mistakes. This book is written to share the
expertise and describe the best practices in the API design and API
product management.
</p>
<p>
You might download ‘The API’ in
<a href="API.en.pdf">PDF</a>
or
<a href="API.en.epub">EPUB</a>
format, or
<a href="API.en.html">read it online</a>.
</p>
<h2 class="toc">Table of Contents</h2>
<ul class="table-of-contents">
<li>
<a href="API.en.html#section-1">Introduction</a>
<ul>
<li>
<a href="API.en.html#chapter-1"
>Chapter 1. On the Structure of This Book</a
>
</li>
<li>
<a href="API.en.html#chapter-2"
>Chapter 2. The API Definition</a
>
</li>
<li>
<a href="API.en.html#chapter-3"
>Chapter 3. API Quality Criteria</a
>
</li>
<li>
<a href="API.en.html#chapter-4"
>Chapter 4. Backwards Compatibility</a
>
</li>
<li>
<a href="API.en.html#chapter-5"
>Chapter 5. On Versioning</a
>
</li>
<li>
<a href="API.en.html#chapter-6"
>Chapter 6. Terms and Notation Keys</a
>
</li>
</ul>
</li>
<li>
<a href="API.en.html#section-2">Section I. The API Design</a>
<ul>
<li>
<a href="API.en.html#chapter-7"
>Chapter 7. The API Contexts Pyramid</a
>
</li>
<li>
<a href="API.en.html#chapter-8"
>Chapter 8. Defining an Application Field</a
>
</li>
<li>
<a href="API.en.html#chapter-9"
>Chapter 9. Separating Abstraction Levels</a
>
</li>
<li>
<a href="API.en.html#chapter-10"
>Chapter 10. Isolating Responsibility Areas</a
>
</li>
<li>
<a href="API.en.html#chapter-11"
>Chapter 11. Describing Final Interfaces</a
>
</li>
<li>
<a href="API.en.html#chapter-12"
>Chapter 12. Annex to Section I. Generic API
Example</a
>
</li>
</ul>
</li>
<li>
<a href="API.en.html#section-3"
>Section II. The Backwards Compatibility</a
>
<ul>
<li>
<a href="API.en.html#chapter-13"
>Chapter 13. The Backwards Compatibility Problem
Statement</a
>
</li>
<li>
<a href="API.en.html#chapter-14"
>Chapter 14. On the Iceberg's Waterline</a
>
</li>
<li>
<a href="API.en.html#chapter-15"
>Chapter 15. Extending through Abstracting</a
>
</li>
<li>
<a href="API.en.html#chapter-16"
>Chapter 16. Strong Coupling and Related Problems</a
>
</li>
<li>
<a href="API.en.html#chapter-17"
>Chapter 17. Weak Coupling</a
>
</li>
<li>
<a href="API.en.html#chapter-18"
>Chapter 18. Interfaces as a Universal Pattern</a
>
</li>
<li>
<a href="API.en.html#chapter-19"
>Chapter 19. The Serenity Notepad</a
>
</li>
</ul>
</li>
<li>
Section III. The API Product
<ul>
<li>Chapter 20. API as a Product</li>
<li>Chapter 21. API Business Models</li>
<li>Chapter 22. Developing a Product Vision</li>
<li>Chapter 23. Communicating with Developers</li>
<li>Chapter 24. Communicating with Business Owners</li>
<li>Chapter 25. API Services Range</li>
<li>Chapter 26. API KPIs</li>
<li>Chapter 27. Identifying Users</li>
<li>Chapter 28. Anti-fraud and IT-security</li>
<li>Chapter 29. Supporting API users</li>
<li>Chapter 30. Documentation</li>
<li>Chapter 31. Testing Environment</li>
<li>Chapter 32. Managing Expectations</li>
</ul>
</li>
</ul>
<p>
The book is distributed under the
<a href="https://creativecommons.org/licenses/by-nc/4.0/"
>Creative Commons Attribution-NonCommercial 4.0 International
licence</a
>. The source code is available on
<a href="https://github.com/twirl/The-API-Book">Github</a>.
Illustration & inspiration by
<a href="https://www.instagram.com/art.mari.ka/">art.mari.ka</a>.
</p>
<p>Также доступна <a href="index.ru.html">русская версия</a>.</p>
</body>
</html>

328
docs/index.ru.html Normal file
View File

@ -0,0 +1,328 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<link rel="icon" type="image/jpg" href="assets/favicon.png" />
<title>Сергей Константинов. «API». Бесплатная электронная книга</title>
<meta
name="description"
content="Разработка API — особый навык: API является как мультипликатором ваших возможностей, так и мультипликатором ваших ошибок. Эта книга написана для того, чтобы поделиться опытом и изложить лучшие практики проектирования и управления продуктом API"
/>
<meta property="og:type" content="article" />
<meta
property="og:title"
content="Сергей Константинов. «API». Бесплатная электронная книга"
/>
<meta
property="og:description"
content="Разработка API — особый навык: API является как мультипликатором ваших возможностей, так и мультипликатором ваших ошибок. Эта книга написана для того, чтобы поделиться опытом и изложить лучшие практики проектирования и управления продуктом API"
/>
<meta property="og:image" content="assets/header.png" />
<meta
property="og:url"
content="https://twirl.github.io/The-API-Book/"
/>
<style>
@font-face {
font-family: local-serif;
src: url(assets/PTSerif-Regular.ttf);
}
@font-face {
font-family: local-serif;
src: url(assets/PTSerif-Bold.ttf);
font-weight: bold;
}
* {
margin: 0;
padding: 0;
border: none;
font-family: local-serif, Arial, Helvetica, sans-serif;
font-size: 24px;
list-style-type: none;
}
ul > li {
padding-left: 1em;
}
p {
margin: 1em 0;
}
body {
margin: 5px;
}
nav {
text-align: center;
}
nav a {
vertical-align: -12%;
content: ' ';
width: 1em;
height: 1em;
display: inline-block;
background-position: 0 0;
background-size: auto 100%;
background-repeat: no-repeat;
text-decoration: none;
}
a.github {
background-image: url(assets/github.jpg);
width: 1.2em;
}
a.habr {
background-image: url(assets/habr.png);
}
a.linkedin {
background-image: url(assets/linkedin.png);
width: 1.176em;
}
a.twitter {
background-image: url(assets/twitter.svg);
width: 1.392em;
}
a.patreon,
a.medium,
a.habr {
width: auto;
padding-left: 1em;
vertical-align: baseline;
background-position: 0 0.2em;
}
a.patreon {
background-image: url(assets/patreon.png);
}
a.medium {
background-image: url(assets/medium.png);
padding-left: 1.3em;
background-size: 1.42em 1em;
}
body img {
width: 100%;
max-width: 1000px;
}
@media (min-width: 1010px) {
body {
width: 1000px;
margin: 5px auto;
text-align: justify;
}
}
@media (min-width: 2000px) {
body {
width: auto;
margin: 5px 25%;
text-align: justify;
}
}
</style>
</head>
<body>
<nav>
<img
src="assets/header.jpg"
alt="Сергей Константинов. «API». Бесплатная электронная книга"
/><br />
Сергей Константинов. «API». Бесплатная электронная книга<br />Подпишитесь
на обновления на
<a class="habr" href="https://habr.com/ru/users/forgotten/posts/"
>Хабре</a
&middot; <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
&middot; <a
class="twitter"
href="https://twitter.com/blogovodoved"
></a
&middot; <a class="medium" href="https://twirl.medium.com/"
>Medium</a
><br />Вы можете поддержать эту работу на
<a class="patreon" href="https://www.patreon.com/yatwirl">Patreon</a
> или <a
href="https://www.amazon.com/gp/product/B09RHH44S5/ref=dbs_a_def_rwt_hsch_vapi_tkin_p1_i0"
>купить Kindle-версию</a
>
<br />⚙️⚙️⚙️
</nav>
<p>
Разработка API — особый навык: API является как мультипликатором
ваших возможностей, так и мультипликатором ваших ошибок. Эта книга
написана для того, чтобы поделиться опытом и изложить лучшие
практики проектирования и управления продуктом API.
</p>
<p>
Вы можете скачать книгу «API» в формате
<a href="API.ru.pdf">PDF</a>
или
<a href="API.ru.epub">EPUB</a>, или
<a href="API.ru.html">читать её онлайн</a>.
</p>
<h2 class="toc">Содержание</h2>
<ul class="table-of-contents">
<li>
<a href="API.ru.html#section-1">Введение</a>
<ul>
<li>
<a href="API.ru.html#chapter-1"
>Глава 1. О структуре этой книги</a
>
</li>
<li>
<a href="API.ru.html#chapter-2"
>Глава 2. Определение API</a
>
</li>
<li>
<a href="API.ru.html#chapter-3"
>Глава 3. Критерии качества API</a
>
</li>
<li>
<a href="API.ru.html#chapter-4"
>Глава 4. Обратная совместимость</a
>
</li>
<li>
<a href="API.ru.html#chapter-5"
>Глава 5. О версионировании</a
>
</li>
<li>
<a href="API.ru.html#chapter-6"
>Глава 6. Условные обозначения и терминология</a
>
</li>
</ul>
</li>
<li>
<a href="API.ru.html#section-2">Раздел I. Проектирование API</a>
<ul>
<li>
<a href="API.ru.html#chapter-7"
>Глава 7. Пирамида контекстов API</a
>
</li>
<li>
<a href="API.ru.html#chapter-8"
>Глава 8. Определение области применения</a
>
</li>
<li>
<a href="API.ru.html#chapter-9"
>Глава 9. Разделение уровней абстракции</a
>
</li>
<li>
<a href="API.ru.html#chapter-10"
>Глава 10. Разграничение областей ответственности</a
>
</li>
<li>
<a href="API.ru.html#chapter-11"
>Глава 11. Описание конечных интерфейсов</a
>
</li>
<li>
<a href="API.ru.html#chapter-12"
>Глава 12. Приложение к разделу I. Модельный API</a
>
</li>
</ul>
</li>
<li>
<a href="API.ru.html#section-3"
>Раздел II. Обратная совместимость</a
>
<ul>
<li>
<a href="API.ru.html#chapter-13"
>Глава 13. Постановка проблемы обратной
совместимости</a
>
</li>
<li>
<a href="API.ru.html#chapter-14"
>Глава 14. О ватерлинии айсберга</a
>
</li>
<li>
<a href="API.ru.html#chapter-15"
>Глава 15. Расширение через абстрагирование</a
>
</li>
<li>
<a href="API.ru.html#chapter-16"
>Глава 16. Сильная связность и сопутствующие
проблемы</a
>
</li>
<li>
<a href="API.ru.html#chapter-17"
>Глава 17. Слабая связность</a
>
</li>
<li>
<a href="API.ru.html#chapter-18"
>Глава 18. Интерфейсы как универсальный паттерн</a
>
</li>
<li>
<a href="API.ru.html#chapter-19"
>Глава 19. Блокнот душевного покоя</a
>
</li>
</ul>
</li>
<li>
Раздел III. API как продукт
<ul>
<li>Глава 20. Продукт API</li>
<li>Глава 21. Бизнес-модели API</li>
<li>Глава 22. Формирование продуктового видения</li>
<li>Глава 23. Взаимодействие с разработчиками</li>
<li>Глава 24. Взаимодействие с бизнес-аудиторией</li>
<li>Глава 25. Линейка сервисов API</li>
<li>Глава 26. KPI API</li>
<li>Глава 27. Идентификация пользователей</li>
<li>Глава 28. Антифрод и информационная безопасность</li>
<li>Глава 29. Поддержка пользователей API</li>
<li>Глава 30. Документация</li>
<li>Глава 31. Тестовая среда</li>
<li>Глава 32. Управление ожиданиями</li>
</ul>
</li>
</ul>
<p>
Эта книга распространяется на условиях лицензии
<a href="https://creativecommons.org/licenses/by-nc/4.0/"
>Creative Commons Attribution-NonCommercial 4.0 International
licence</a
>. Исходный код доступен на
<a href="https://github.com/twirl/The-API-Book">Github</a>.
Иллюстрации и вдохновение:
<a href="https://www.instagram.com/art.mari.ka/">art.mari.ka</a>.
</p>
<p>
You might read ‘The API’ <a href="index.html">in English</a> as
well.
</p>
</body>
</html>