From 7c544d927469fef9596777cc83d567799247fecd Mon Sep 17 00:00:00 2001
From: Sergey Konstantinov Для составных частей сущности, к сожалению, достаточно нейтрального термина нам придумать не удалось, поэтому мы используем слова «поля» и «методы». Большинство примеров API в общих разделах будут даны в виде JSON-over-HTTP-эндпойтов. Это некоторая условность, которая помогает описать концепции, как нам кажется, максимально понятно. Вместо Рассмотрим следующую запись: Для упрощения неважен возможна сокращенная запись вида: Чтобы сослаться на это описание будут использоваться выражения типа «метод Тело ответа или запроса может быть опущено, если в контексте обсуждаемого вопроса его содержание не имеет значения. Для упрощения возможна сокращенная запись вида: Чтобы сослаться на это описание будут использоваться выражения типа «метод Подход, который мы используем для проектирования, состоит из четырёх шагов: Прежде чем переходить к теории, следует чётко сформулировать, зачем нужны уровни абстракции и каких целей мы хотим достичь их выделением. Вспомним, что программный продукт - это средство связи контекстов, средство преобразования терминов и операций одной предметной области в другую. Чем дальше друг от друга эти области отстоят - тем большее число промежуточных передаточных звеньев нам придётся ввести. Вернёмся к нашему примеру с кофейнями. Какие уровни сущностей мы видим? Каждый из этих уровней задаёт некоторый срез нашего API, с которым будет работать потребитель. Выделяя иерархию абстракций мы прежде всего стремимся снизить связность различных сущностей нашего API. Это позволит нам добиться нескольких целей: Поддержание интероперабельности. Правильно выделенные низкоуровневые абстракции позволят нам адаптировать наше API к другим платформам, не меняя высокоуровневый интерфейс. Допустим, мы имеем следующий интерфейс: И зададимся вопросом, каким образом разработчик определит, что заказ клиента готов. Допустим, мы сделаем так: добавим в рецепт лунго эталонный объём, а в состояние заказа — количество уже налитого кофе. Тогда разработчику нужно будет проверить совпадение этих двух цифр, чтобы убедиться, что кофе готов. Такое решение выглядит интуитивно плохим, и это действительно так: оно нарушает все вышеперечисленные принципы: Такое решение выглядит интуитивно плохим, и это действительно так: оно нарушает все вышеперечисленные принципы. Для решения задачи «заказать лунго» разработчику нужно обратиться к сущности «рецепт» и выяснить, что у каждого рецепта есть объём. Далее, нужно принять концепцию, что приготовление кофе заканчивается в тот момент, когда объём сравнялся с эталонным. Нет никакого способа об этой конвенции догадаться: она неочевидна и её нужно найти в документации. При этом никакой пользы для разработчика в этом знании нет. Мы автоматически получаем проблемы, если захотим варьировать размер кофе. Допустим, в какой-то момент мы захотим представить пользователю выбор, сколько конкретно миллилитров лунго он желает. Тогда нам придётся проделать один из следующих трюков: Для таких кофе произвольного объёма нужно будет получать требуемый объём не из Вся эта схема полностью неработоспособна, если разные модели кофе-машин производят лунго разного объёма. Для решения задачи «объём лунго зависит от вида машины» нам придётся сделать совсем неприятную вещь: сделать рецепт зависимым от id машины. Тем самым мы начнём активно смешивать уровни абстракции: одной частью нашего API (рецептов) станет невозможно пользоваться без другой части (информации о кофе-машинах). Что немаловажно, от разработчиков потребуется изменить логику своего приложения: если раньше они могли предлагать сначала выбрать объём, а потом кофе-машину, то теперь им придётся полностью изменить этот шаг. Хорошо, допустим, мы поняли, как сделать плохо. Но как же тогда сделать хорошо? Разделение уровней абстракции должно происходить вдоль трёх направлений: Предположим, для большей конкретности, что эти два класса устройств поставляются вот с таким физическим API: Машины с предустановленными программами: NB. На всякий случай отметим, что данное API нарушает множество описанных нами принципов проектирования, начиная с отсутствия версионирования; оно приведено в таком виде по двум причинам: (1) чтобы мы могли показать, как спроектировать API более удачно; (2) скорее всего, в реальной жизни вы получите именно такое API от производителей кофе-машин, и это ещё довольно вменяемый вариант. Машины с предустановленными функциями: Что это будет означать практически? Разработчик по-прежнему будет создавать заказ, оперируя только высокоуровневыми терминами: Имплементация функции Получив идентификатор программы, нужно запустить её на исполнение: Обратите внимание, что во всей этой цепочке вообще никак не участвует тип API кофе-машины — собственно, ровно для этого мы и абстрагировали. Мы могли бы сделать интерфейсы более конкретными, разделив функциональность Уровень рантаймов API второго типа, исходя из общих соображений, будет скорее всего непубличным, и мы плюс-минус свободны в его имплементации. Самым простым решением будет реализовать виртуальную state-машину, которая создаёт «рантайм» (т.е. stateful контекст исполнения) для выполнения программы и следит за его состоянием. Здесь Из названия любой сущности должно быть очевидно, что она делает и к каким сайд-эффектам может привести её использование. Плохо: Неочевидно, что достаточно просто обращения к сущности Хорошо: Плохо: Даже если операция немодифицирующая, но вычислительно дорогая — следует об этом явно индицировать, особенно если вычислительные ресурсы тарифицируются для пользователя; тем более не стоит подбирать значения по умолчанию так, чтобы вызов операции без параметров максимально расходовал ресурсы. Хорошо: Стремитесь к тому, чтобы из сигнатуры функции было абсолютно ясно, что она делает, что принимает на вход и что возвращает. Вообще, при прочтении кода, работающего с вашим API, должно быть сразу понятно, что, собственно, он делает — без подглядывания в документацию.GET /v1/orders
вполне может быть вызов метода orders.get()
, локальный или удалённый; вместо JSON может быть любой другой формат данных. Смысл утверждений от этого не меняется.POST /v1/bucket/{id}/some-resource
+
-// Описание метода
+POST /v1/bucket/{id}/some-resource
{
…
// Это однострочный комментарий
"some_parameter": "value",
…
}
-
{
+→
+{
/* А это многострочный
комментарий */
"operation_id"
@@ -158,11 +159,9 @@ h4, h5 {
some_parameter
со значением value
и ещё какие-то поля, которые для краткости опущены (что показано многоточием);operation_id
; отсутствие значения поля означает, что его значением является именно то, что в этом поле и ожидается — в данном случае какой-то идентификатор операции.
-
-POST /v1/bucket/{id}/some-resource
{…,"some_parameter",…}
— если тела ответа нет или оно нам не понадобится в ходе рассмотрения примера.POST /v1/bucket/{id}/some-resource
» или, для простоты, «метод /some-resource
» (если никаких других some-resource
в контексте главы не упоминается и перепутать не с чем).I. Проектирование API
Глава 7. Пирамида контекстов API
+POST /v1/bucket/{id}/some-resource
{…,"some_parameter",…}
→ { "operation_id" }
; тело запроса и/или ответа может опускаться аналогично полной записи.POST /v1/bucket/{id}/some-resource
» или, для простоты, «метод some-resource
» или «метод bucket/some-resource
» (если никаких других some-resource
в контексте главы не упоминается и перепутать не с чем).I. Проектирование API
Глава 7. Пирамида контекстов API
-
@@ -227,28 +224,35 @@ h4, h5 {
-
+GET /v1/recipes/lungo
-— возвращает рецепт лунго;POST /v1/coffee-machines/orders?machine_id={id}
-{recipe:"lungo"}
-— размещает на указанной кофе-машине заказ на приготовление лунго и возвращает идентификатор заказа;GET /v1/orders?order_id={id}
-— возвращает состояние заказа;
+ // возвращает рецепт лунго
+ GET /v1/recipes/lungo
+
+ // размещает на указанной кофе-машине заказ на приготовление лунго и возвращает идентификатор заказа
+ POST /v1/coffee-machines/orders?machine_id={id}
+ {
+ "recipe": "lungo"
+ }
+
// возвращает состояние заказа
+ GET /v1/orders?order_id={id}
+
/recipes/small-lungo
, recipes/large-lungo
. Почему фиктивные? Потому что рецепт один и тот же, меняется только объём. Нам придётся либо тиражировать одинаковые рецепты, отличающиеся только объёмом, либо вводить какое-то «наследование» рецептов, чтобы можно было указать базовый рецепт и только переопределить объём;
-POST /v1/coffee-machines/orders?machine_id={id}
-{recipe:"lungo","volume":"800ml"}
-Для таких кофе произвольного объёма нужно будет получать требуемый объём не из GET /v1/recipes
, а из GET /v1/orders
. Сделав так, мы сразу получаем клубок из связанных проблем:POST /v1/coffee-machines/orders
нужно не забыть переписать код проверки готовности заказа;GET /v1/recipes
поле «объём» теперь значит «объём, который будет запрошен, если не передать его явно в POST /v1/coffee-machines/orders
»; переименовать его в «объём по умолчанию» уже не получится, с этой проблемой теперь придётся жить.
+ POST /v1/coffee-machines/orders?machine_id={id}
+ {
+ "recipe":"lungo",
+ "volume":"800ml"
+ }
+
GET /v1/recipes
, а из GET /v1/orders
. Сделав так, мы сразу получаем клубок из связанных проблем:
+ * разработчик, которому придётся поддержать эту функциональность, имеет высокие шансы сделать ошибку: добавив поддержку произвольного объёма кофе в код, работающий с POST /v1/coffee-machines/orders
нужно не забыть переписать код проверки готовности заказа;
+ * мы получим классическую ситуацию, когда одно и то же поле (объём кофе) значит разные вещи в разных интерфейсах. В GET /v1/recipes
поле «объём» теперь значит «объём, который будет запрошен, если не передать его явно в POST /v1/coffee-machines/orders
»; переименовать его в «объём по умолчанию» уже не получится, с этой проблемой теперь придётся жить.
GET /programs
-// Возвращает список предустановленных программ
+
-// Возвращает список предустановленных программ
+GET /programs
+→
{
// идентификатор программы
"program": "01",
@@ -299,13 +304,14 @@ h4, h5 {
"type": "lungo"
}
POST /execute
+
-// Запускает указанную программу на исполнение
+// и возвращает статус исполнения
+POST /execute
{
"program": 1,
"volume": "200ml"
}
-// Запускает указанную программу на исполнение
-// и возвращает статус исполнения
+→
{
// Уникальный идентификатор задания
"execution_id": "01-01",
@@ -315,17 +321,18 @@ h4, h5 {
"volume": "200ml"
}
POST /cancel
-// Отменяет текущую программу
+
-// Отменяет текущую программу
+POST /cancel
GET /execution/status
-// Возвращает статус исполнения
+
// Возвращает статус исполнения
// Формат аналогичен формату ответа `POST /execute`
+GET /execution/status
GET /functions
-// Возвращает список доступных функций
+
-// Возвращает список доступных функций
+GET /functions
+→
{
"functions": [
{
@@ -344,16 +351,17 @@ h4, h5 {
]
}
POST /functions
+
-// Запускает на исполнение функцию
+// с передачей указанных значений аргументов
+POST /functions
{
"type": "set_cup",
"arguments": [{ "name": "volume", "value": "300ml" }]
}
-// Запускает на исполнение функцию
-// с передачей указанных значений аргументов
GET /sensors
-// Возвращает статусы датчиков
+
// Возвращает статусы датчиков
+GET /sensors
+→
{
"sensors": [
{
@@ -394,13 +402,18 @@ h4, h5 {
POST /v1/coffee-machines/orders?machine_id={id}
-{recipe:"lungo","volume":"800ml"}
+{
+ "recipe": "lungo",
+ "volume": "800ml"
+}
+→
+{ "order_id" }
POST /orders
проверит все параметры заказа, заблокирует его стоимость на карте пользователя, сформирует полный запрос на исполнение и обратится к уровню исполнения. Сначала необходимо подобрать правильную программу исполнения:
-POST /v1/programs/match
{ "recipe", "coffee-machine" }
-
{ "program_id" }
+→
+{ "program_id" }
-POST /v1/programs/{id}/run
@@ -414,8 +427,8 @@ h4, h5 {
}
]
}
-
{ "program_run_id" }
+→
+{ "program_run_id" }
run
и match
для разных API, т.е. ввести раздельные endpoint-ы:
@@ -430,8 +443,8 @@ h4, h5 {
-POST /v1/runtimes
{ "coffee_machine", "program", "parameters" }
-
{ "runtime_id", "state" }
+→
+{ "runtime_id", "state" }
program
будет выглядеть примерно так:{
@@ -575,23 +588,23 @@ h4, h5 {
GET /orders/cancellation
-// отменяет заказ
+
// Отменяет заказ
+GET /orders/cancellation
cancellation
(что это?), тем более немодифицирующим методом GET
, чтобы отменить заказ; POST /orders/cancel
-отменяет заказ
+
// Отменяет заказ
+POST /orders/cancel
GET /orders/statistics
-// Возвращает агрегированную статистику заказов за всё время
+
// Возвращает агрегированную статистику заказов за всё время
+GET /orders/statistics
POST /orders/statistics/aggregate
+
// Возвращает агрегированную статистику заказов за указанный период
+POST /orders/statistics/aggregate
{ "start_date", "end_date" }
-// Возвращает агрегированную статистику заказов за указанный период
order.get_estimated_delivery_time()
-strpbrk (str1, str2)
// возвращает положение первого вхождения в строку str2
// любого символа из строки str2
+strpbrk (str1, str2)
Возможно, автору этого API казалось, что аббревиатура pbrk
что-то значит для читателя, но он явно ошибся. К тому же, невозможно сходу понять, какая из строк str1
, str2
является набором символов для поиска.
Хорошо: str_search_for_characters(lookup_character_set, str)
@@ -655,8 +668,8 @@ strpbrk (str1, str2)
-GET /coffee-machines/functions
// Возвращает список встроенных функций кофе-машины
+GET /coffee-machines/functions
Слово "functions" многозначное; может означать и встроенные функции, и написанный код, и состояние (функционирует-не функционирует).
Хорошо: GET /coffee-machines/builtin-functions-list
begin
и stop
— непарные термины; разработчик будет вынужден рыться в документации.
Хорошо: begin_transition
/ end_transition
либо start_transition
/ stop_transition
.
Плохо:
-strpos(haystack, needle)
-// Находит первую позицию позицию строки `needle`
+// Находит первую позицию позицию строки `needle`
// внутри строки `haystack`
+strpos(haystack, needle)
-str_replace(needle, replace, haystack)
-// Находит и заменяет все вхождения строки `needle`
+// Находит и заменяет все вхождения строки `needle`
// внутри строки `haystack` на строку `replace`
+str_replace(needle, replace, haystack)
Здесь нарушены сразу несколько правил:
@@ -687,18 +700,16 @@ GET /coffee-machines/functions
- Плохо:
+// Создаёт комментарий и возвращает его id
POST /comments
{ "content" }
-// Создаёт комментарий и возвращает его id
-
-
+→
{ "comment_id" }
-GET /comments/{id}
// Возвращает комментарий по его id
-
-
+GET /comments/{id}
+→
{
// Комментарий не опубликован
// и ждёт прохождения капчи
@@ -710,20 +721,19 @@ GET /comments/{id}
— хотя операция будто бы выполнена успешна, клиенту необходимо сделать дополнительный запрос, чтобы понять необходимость решения капчи. Между вызовами POST /comments
и GET /comments/{id}
клиент находится в состоянии кота Шрёдингера: непонятно, опубликован комментарий или нет, и как отразить это пользователю.
Хорошо:
+// Создаёт комментарий и возвращает его
POST /comments
{ "content" }
-// Создаёт комментарий и возвращает его
-
-
+→
{ "comment_id", "published", "action_required", "content" }
-GET /comments/{id}
// Возвращает комментарий по его id
-
-
+GET /comments/{id}
+→
{ /* в точности тот же формат,
что и в ответе POST /comments */
+ …
}
Вообще в 9 случаях из 10 (а фактически — всегда, когда размер ответа невелик) во всех отношениях лучше из любой модифицирующей операции возвращать полное состояние сущности в том же формате, что и из операции доступа на чтение.
diff --git a/docs/API.ru.pdf b/docs/API.ru.pdf
index 78a40f3ea85c69b4e447eaac1c39ba3ae8d0d7b4..32c669dabc94bd224af79df8cf45ab0cca234346 100644
GIT binary patch
delta 1151433
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
z
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