Разработка RESTful api with all bells and whistles
-
Upload
yandex -
Category
Technology
-
view
4.459 -
download
0
Transcript of Разработка RESTful api with all bells and whistles
![Page 1: Разработка RESTful api with all bells and whistles](https://reader035.fdocuments.in/reader035/viewer/2022081513/5594bf5c1a28ab93748b4604/html5/thumbnails/1.jpg)
1
![Page 2: Разработка RESTful api with all bells and whistles](https://reader035.fdocuments.in/reader035/viewer/2022081513/5594bf5c1a28ab93748b4604/html5/thumbnails/2.jpg)
2
Разработка RESTful API
with all the bells and
whistles
Роман Акинфеев
![Page 3: Разработка RESTful api with all bells and whistles](https://reader035.fdocuments.in/reader035/viewer/2022081513/5594bf5c1a28ab93748b4604/html5/thumbnails/3.jpg)
3
Яндекс.Диск — это сервис, который позволяет
хранить файлы и обмениваться ими, а также
предоставляет доступ к файлам с любого
устройства, подключённого к интернету.
• 20+ млн. зарегистрированных пользователей
• 10+ млн. загружаемых в сутки файлов
• 7+ млрд. файлов
![Page 4: Разработка RESTful api with all bells and whistles](https://reader035.fdocuments.in/reader035/viewer/2022081513/5594bf5c1a28ab93748b4604/html5/thumbnails/4.jpg)
4
Яндекс.Диск — это сервис, который позволяет
хранить файлы и обмениваться ими, а также
предоставляет доступ к файлам с любого
устройства, подключённого к интернету.
• 20+ млн. зарегистрированных пользователей
10+ млн. загружаемых в сутки файлов
7+ млрд. файлов
![Page 5: Разработка RESTful api with all bells and whistles](https://reader035.fdocuments.in/reader035/viewer/2022081513/5594bf5c1a28ab93748b4604/html5/thumbnails/5.jpg)
5
Яндекс.Диск — это сервис, который позволяет
хранить файлы и обмениваться ими, а также
предоставляет доступ к файлам с любого
устройства, подключённого к интернету.
• 20+ млн. зарегистрированных пользователей
• 10+ млн. загружаемых в сутки файлов
7+ млрд. файлов
![Page 6: Разработка RESTful api with all bells and whistles](https://reader035.fdocuments.in/reader035/viewer/2022081513/5594bf5c1a28ab93748b4604/html5/thumbnails/6.jpg)
6
Яндекс.Диск — это сервис, который позволяет
хранить файлы и обмениваться ими, а также
предоставляет доступ к файлам с любого
устройства, подключённого к интернету.
• 20+ млн. зарегистрированных пользователей
• 10+ млн. загружаемых в сутки файлов
• 7+ млрд. файлов
![Page 7: Разработка RESTful api with all bells and whistles](https://reader035.fdocuments.in/reader035/viewer/2022081513/5594bf5c1a28ab93748b4604/html5/thumbnails/7.jpg)
7
Yandex Disk APIs
WebDAV
Для работы с Диском, как с файловой системой
RESTful API
Для работы с Диском там, где WebDAV’а мало
![Page 8: Разработка RESTful api with all bells and whistles](https://reader035.fdocuments.in/reader035/viewer/2022081513/5594bf5c1a28ab93748b4604/html5/thumbnails/8.jpg)
8
Yandex Disk APIs
WebDAV
Для работы с Диском, как с файловой системой
RESTful API
Для работы с Диском там, где WebDAV’а мало
![Page 9: Разработка RESTful api with all bells and whistles](https://reader035.fdocuments.in/reader035/viewer/2022081513/5594bf5c1a28ab93748b4604/html5/thumbnails/9.jpg)
9
Задачи
![Page 10: Разработка RESTful api with all bells and whistles](https://reader035.fdocuments.in/reader035/viewer/2022081513/5594bf5c1a28ab93748b4604/html5/thumbnails/10.jpg)
10
Задачи
• Простота изучения возможностей API
Легко расширяемая функциональность
Простота разработки под API
![Page 11: Разработка RESTful api with all bells and whistles](https://reader035.fdocuments.in/reader035/viewer/2022081513/5594bf5c1a28ab93748b4604/html5/thumbnails/11.jpg)
11
Задачи
• Простота изучения возможностей API
• Легко расширяемая функциональность
Простота разработки под API
![Page 12: Разработка RESTful api with all bells and whistles](https://reader035.fdocuments.in/reader035/viewer/2022081513/5594bf5c1a28ab93748b4604/html5/thumbnails/12.jpg)
12
Задачи
• Простота изучения возможностей API
• Легко расширяемая функциональность
• Простота разработки под API
![Page 13: Разработка RESTful api with all bells and whistles](https://reader035.fdocuments.in/reader035/viewer/2022081513/5594bf5c1a28ab93748b4604/html5/thumbnails/13.jpg)
13
RESTful API Яндекс Диска
• Понятная и логичная структура
Hypermedia API
Self-descriptive & Machine-readable API
![Page 14: Разработка RESTful api with all bells and whistles](https://reader035.fdocuments.in/reader035/viewer/2022081513/5594bf5c1a28ab93748b4604/html5/thumbnails/14.jpg)
14
RESTful API Яндекс Диска
• Понятная и логичная структура
• Hypermedia API
Self-descriptive & Machine-readable API
![Page 15: Разработка RESTful api with all bells and whistles](https://reader035.fdocuments.in/reader035/viewer/2022081513/5594bf5c1a28ab93748b4604/html5/thumbnails/15.jpg)
15
RESTful API Яндекс Диска
• Понятная и логичная структура
• Hypermedia API
• Self-descriptive & Machine-readable API
![Page 16: Разработка RESTful api with all bells and whistles](https://reader035.fdocuments.in/reader035/viewer/2022081513/5594bf5c1a28ab93748b4604/html5/thumbnails/16.jpg)
16
Что такое REST?
• Просто набор принципов
• Никаких готовых решений
• Только ограничения
![Page 17: Разработка RESTful api with all bells and whistles](https://reader035.fdocuments.in/reader035/viewer/2022081513/5594bf5c1a28ab93748b4604/html5/thumbnails/17.jpg)
17
Клиент-сервер и интерфейс
• Клиент и сервер знают
интерфейс
• Клиент и сервер не знают
друг друга
Профит
Много клиентов хороших и
разных
Сервер не замечает, как
обновляются клиенты
Клиенты не замечают, как
обновляется сервер
![Page 18: Разработка RESTful api with all bells and whistles](https://reader035.fdocuments.in/reader035/viewer/2022081513/5594bf5c1a28ab93748b4604/html5/thumbnails/18.jpg)
18
Клиент-сервер и интерфейс
• Клиент и сервер знают
интерфейс
• Клиент и сервер не знают
друг друга
Профит
• Много клиентов хороших и
разных
• Сервер не замечает, как
обновляются клиенты
• Клиенты не замечают, как
обновляется сервер
![Page 19: Разработка RESTful api with all bells and whistles](https://reader035.fdocuments.in/reader035/viewer/2022081513/5594bf5c1a28ab93748b4604/html5/thumbnails/19.jpg)
19
Stateless
• Сервер не хранит никакой информации о состоянии
клиента между запросами
Нет соединений
Нет сессий
Нет истории операций клиента
Профит
Бэкэнд легко масштабируется
Клиент не беспокоится ни о чём между запросами
![Page 20: Разработка RESTful api with all bells and whistles](https://reader035.fdocuments.in/reader035/viewer/2022081513/5594bf5c1a28ab93748b4604/html5/thumbnails/20.jpg)
20
Stateless
• Сервер не хранит никакой информации о состоянии
клиента между запросами
• Нет соединений
• Нет сессий
• Нет истории операций клиента
Профит
Бэкэнд легко масштабируется
Клиент не беспокоится ни о чём между запросами
![Page 21: Разработка RESTful api with all bells and whistles](https://reader035.fdocuments.in/reader035/viewer/2022081513/5594bf5c1a28ab93748b4604/html5/thumbnails/21.jpg)
21
Stateless
• Сервер не хранит никакой информации о состоянии
клиента между запросами
• Нет соединений
• Нет сессий
• Нет истории операций клиента
Профит
• Бэкэнд легко масштабируется
• Клиент не беспокоится ни о чём между запросами
![Page 22: Разработка RESTful api with all bells and whistles](https://reader035.fdocuments.in/reader035/viewer/2022081513/5594bf5c1a28ab93748b4604/html5/thumbnails/22.jpg)
22
Кэшируемость и многослойность
• Сервер сообщает, что и как кэшировать
• Клиент может не соединяться напрямую с сервером
Профит
Возможность снизить нагрузку на бэкэнд
Возможность работать с кэшем на клиенте
![Page 23: Разработка RESTful api with all bells and whistles](https://reader035.fdocuments.in/reader035/viewer/2022081513/5594bf5c1a28ab93748b4604/html5/thumbnails/23.jpg)
23
Кэшируемость и многослойность
• Сервер сообщает, что и как кэшировать
• Клиент может не соединяться напрямую с сервером
Профит
• Возможность снизить нагрузку на бэкэнд
• Возможность работать с кэшем на клиенте
![Page 24: Разработка RESTful api with all bells and whistles](https://reader035.fdocuments.in/reader035/viewer/2022081513/5594bf5c1a28ab93748b4604/html5/thumbnails/24.jpg)
24
Рецепт
RESTful API Яндекс Диска
![Page 25: Разработка RESTful api with all bells and whistles](https://reader035.fdocuments.in/reader035/viewer/2022081513/5594bf5c1a28ab93748b4604/html5/thumbnails/25.jpg)
25
Ресурсы
![Page 26: Разработка RESTful api with all bells and whistles](https://reader035.fdocuments.in/reader035/viewer/2022081513/5594bf5c1a28ab93748b4604/html5/thumbnails/26.jpg)
26
Ресурсы
• Система оперирует ресурсами
Ресурсы имеют чёткую структуру
URL – уникальный идентификатор ресурса
Ресурсы API Диска:
Файлы и папки – resources
Асинхронные операции – operations
![Page 27: Разработка RESTful api with all bells and whistles](https://reader035.fdocuments.in/reader035/viewer/2022081513/5594bf5c1a28ab93748b4604/html5/thumbnails/27.jpg)
27
Ресурсы
• Система оперирует ресурсами
• Ресурсы имеют чёткую структуру
URL – уникальный идентификатор ресурса
Ресурсы API Диска:
Файлы и папки – resources
Асинхронные операции – operations
![Page 28: Разработка RESTful api with all bells and whistles](https://reader035.fdocuments.in/reader035/viewer/2022081513/5594bf5c1a28ab93748b4604/html5/thumbnails/28.jpg)
28
Ресурсы
• Система оперирует ресурсами
• Ресурсы имеют чёткую структуру
• URL – уникальный идентификатор ресурса
Ресурсы API Диска:
Файлы и папки – resources
Асинхронные операции – operations
![Page 29: Разработка RESTful api with all bells and whistles](https://reader035.fdocuments.in/reader035/viewer/2022081513/5594bf5c1a28ab93748b4604/html5/thumbnails/29.jpg)
29
Ресурсы
• Система оперирует ресурсами
• Ресурсы имеют чёткую структуру
• URL – уникальный идентификатор ресурса
Ресурсы API Диска:
• Файлы и папки – resources
• Асинхронные операции – operations
![Page 30: Разработка RESTful api with all bells and whistles](https://reader035.fdocuments.in/reader035/viewer/2022081513/5594bf5c1a28ab93748b4604/html5/thumbnails/30.jpg)
30
URL ресурсов
![Page 31: Разработка RESTful api with all bells and whistles](https://reader035.fdocuments.in/reader035/viewer/2022081513/5594bf5c1a28ab93748b4604/html5/thumbnails/31.jpg)
31
URL ресурсов
URL группируются в нэймспэйсы
/disk
URL коллекции ресурсов всегда во множественном числе
/disk / resources
/disk / operations
URL коллекции + идентификатор = URL ресурса
/disk / resources ? path={path}
/disk / operations ? id={id}
/pets / kittens / {name}
![Page 32: Разработка RESTful api with all bells and whistles](https://reader035.fdocuments.in/reader035/viewer/2022081513/5594bf5c1a28ab93748b4604/html5/thumbnails/32.jpg)
32
URL ресурсов
URL группируются в нэймспэйсы
/disk
URL коллекции ресурсов всегда во множественном числе
/disk / resources
/disk / operations
URL коллекции + идентификатор = URL ресурса
/disk / resources ? path={path}
/disk / operations ? id={id}
/pets / kittens / {name}
![Page 33: Разработка RESTful api with all bells and whistles](https://reader035.fdocuments.in/reader035/viewer/2022081513/5594bf5c1a28ab93748b4604/html5/thumbnails/33.jpg)
33
URL ресурсов
URL группируются в нэймспэйсы
/disk
URL коллекции ресурсов всегда во множественном числе
/disk / resources
/disk / operations
URL коллекции + идентификатор = URL ресурса
/disk / resources ? path={path}
/disk / operations ? id={id}
/pets / kittens / {name}
![Page 34: Разработка RESTful api with all bells and whistles](https://reader035.fdocuments.in/reader035/viewer/2022081513/5594bf5c1a28ab93748b4604/html5/thumbnails/34.jpg)
34
URL ресурсов
URL группируются в нэймспэйсы
/disk
URL коллекции ресурсов всегда во множественном числе
/disk / resources
/disk / operations
URL коллекции + идентификатор = URL ресурса
/disk / resources ? path={path}
/disk / operations ? id={id}
/pets / kittens / {name}
![Page 35: Разработка RESTful api with all bells and whistles](https://reader035.fdocuments.in/reader035/viewer/2022081513/5594bf5c1a28ab93748b4604/html5/thumbnails/35.jpg)
35
HTTP-методы
Основные CRUD-операции:
GET, POST, PUT, DELETE
![Page 36: Разработка RESTful api with all bells and whistles](https://reader035.fdocuments.in/reader035/viewer/2022081513/5594bf5c1a28ab93748b4604/html5/thumbnails/36.jpg)
36
HTTP-методы
GET – безопасный. Делаем запрос, не задумываясь:
GET /disk/resources?path={path}
GET /disk/operations?id={id}
GET, PUT, DELETE – идемпотентные. Повторяем при обрыве,
не задумываясь:
PUT /disk/resources?path={path}
DELETE /disk/resources?path={path}
POST – опасный. Изменяет состояние ресурса, повторять
опасно
OPTIONS – подскажет поддерживаемые ресурсом методы
![Page 37: Разработка RESTful api with all bells and whistles](https://reader035.fdocuments.in/reader035/viewer/2022081513/5594bf5c1a28ab93748b4604/html5/thumbnails/37.jpg)
37
HTTP-методы
GET – безопасный. Делаем запрос, не задумываясь:
GET /disk/resources?path={path}
GET /disk/operations?id={id}
GET, PUT, DELETE – идемпотентные. Повторяем при обрыве,
не задумываясь:
PUT /disk/resources?path={path}
DELETE /disk/resources?path={path}
POST – опасный. Изменяет состояние ресурса, повторять
опасно
OPTIONS – подскажет поддерживаемые ресурсом методы
![Page 38: Разработка RESTful api with all bells and whistles](https://reader035.fdocuments.in/reader035/viewer/2022081513/5594bf5c1a28ab93748b4604/html5/thumbnails/38.jpg)
38
HTTP-методы
GET – безопасный. Делаем запрос, не задумываясь:
GET /disk/resources?path={path}
GET /disk/operations?id={id}
GET, PUT, DELETE – идемпотентные. Повторяем при обрыве,
не задумываясь:
PUT /disk/resources?path={path}
DELETE /disk/resources?path={path}
POST – опасный. Изменяет состояние ресурса, повторять
опасно
OPTIONS – подскажет поддерживаемые ресурсом методы
![Page 39: Разработка RESTful api with all bells and whistles](https://reader035.fdocuments.in/reader035/viewer/2022081513/5594bf5c1a28ab93748b4604/html5/thumbnails/39.jpg)
39
HTTP-методы
GET – безопасный. Делаем запрос, не задумываясь:
GET /disk/resources?path={path}
GET /disk/operations?id={id}
GET, PUT, DELETE – идемпотентные. Повторяем при обрыве,
не задумываясь:
PUT /disk/resources?path={path}
DELETE /disk/resources?path={path}
POST – опасный. Изменяет состояние ресурса, повторять
опасно
OPTIONS – подскажет поддерживаемые ресурсом методы
![Page 40: Разработка RESTful api with all bells and whistles](https://reader035.fdocuments.in/reader035/viewer/2022081513/5594bf5c1a28ab93748b4604/html5/thumbnails/40.jpg)
40
Когда CRUD мало
![Page 41: Разработка RESTful api with all bells and whistles](https://reader035.fdocuments.in/reader035/viewer/2022081513/5594bf5c1a28ab93748b4604/html5/thumbnails/41.jpg)
41
Когда CRUD мало
Копирование и Перемещение
• Не идемпотентны
• Не безопасны
Надо использовать POST, но метод один, а операции две
На помощь приходят они! Ad Hoc-методы! POST /disk/resources/ copy ? path={path}&from={from}
POST /disk/resources/ move ? path={path}&from={from}
![Page 42: Разработка RESTful api with all bells and whistles](https://reader035.fdocuments.in/reader035/viewer/2022081513/5594bf5c1a28ab93748b4604/html5/thumbnails/42.jpg)
42
Когда CRUD мало
Копирование и Перемещение
• Не идемпотентны
• Не безопасны
Надо использовать POST, но метод один, а операции две
На помощь приходят они! Ad Hoc-методы! POST /disk/resources/ copy ? path={path}&from={from}
POST /disk/resources/ move ? path={path}&from={from}
![Page 43: Разработка RESTful api with all bells and whistles](https://reader035.fdocuments.in/reader035/viewer/2022081513/5594bf5c1a28ab93748b4604/html5/thumbnails/43.jpg)
43
Когда CRUD мало
Копирование и Перемещение
• Не идемпотентны
• Не безопасны
Надо использовать POST, но метод один, а операции две
На помощь приходят они! Ad Hoc-методы! POST /disk/resources/ copy ? path={path}&from={from}
POST /disk/resources/ move ? path={path}&from={from}
![Page 44: Разработка RESTful api with all bells and whistles](https://reader035.fdocuments.in/reader035/viewer/2022081513/5594bf5c1a28ab93748b4604/html5/thumbnails/44.jpg)
44
The Bells And Whistles
RESTful API Яндекс Диска
![Page 45: Разработка RESTful api with all bells and whistles](https://reader035.fdocuments.in/reader035/viewer/2022081513/5594bf5c1a28ab93748b4604/html5/thumbnails/45.jpg)
45
Hypermedia API
Предоставлять данные о том, что можно делать с каждым ресурсом.
Hypermedia as the Engine of Application State
Клиент должен взаимодействовать с сервером посредством
hypermedia-контролов, получаемых от сервера.
Профит
Клиент не дёргает захардкоденные URL
Клиент переходит по ссылкам
![Page 46: Разработка RESTful api with all bells and whistles](https://reader035.fdocuments.in/reader035/viewer/2022081513/5594bf5c1a28ab93748b4604/html5/thumbnails/46.jpg)
46
Hypermedia API
Предоставлять данные о том, что можно делать с каждым ресурсом.
Hypermedia as the Engine of Application State
Клиент должен взаимодействовать с сервером посредством
hypermedia-контролов, получаемых от сервера.
Профит
Клиент не дёргает захардкоденные URL
Клиент переходит по ссылкам
![Page 47: Разработка RESTful api with all bells and whistles](https://reader035.fdocuments.in/reader035/viewer/2022081513/5594bf5c1a28ab93748b4604/html5/thumbnails/47.jpg)
47
Hypermedia API
Предоставлять данные о том, что можно делать с каждым ресурсом.
Hypermedia as the Engine of Application State
Клиент должен взаимодействовать с сервером посредством
hypermedia-контролов, получаемых от сервера.
Профит
• Клиент не дёргает захардкоденные URL
• Клиент переходит по ссылкам
![Page 48: Разработка RESTful api with all bells and whistles](https://reader035.fdocuments.in/reader035/viewer/2022081513/5594bf5c1a28ab93748b4604/html5/thumbnails/48.jpg)
48
Hypermedia API
• Collection+JSON
• HAL
• DocJSON
• JSON API
• JSON Hyperschema
![Page 49: Разработка RESTful api with all bells and whistles](https://reader035.fdocuments.in/reader035/viewer/2022081513/5594bf5c1a28ab93748b4604/html5/thumbnails/49.jpg)
49
Hypertext Application Language
• Чрезвычайно прост
• Есть draft RFC-стандарта
• Уже встречается в публичных API
• MIME-type: application/hal+json
Благодаря HAL
Клиент знает, что и как может сделать с объектом
Сервер может управлять набором доступных действий
![Page 50: Разработка RESTful api with all bells and whistles](https://reader035.fdocuments.in/reader035/viewer/2022081513/5594bf5c1a28ab93748b4604/html5/thumbnails/50.jpg)
50
Hypertext Application Language
• Чрезвычайно прост
• Есть draft RFC-стандарта
• Уже встречается в публичных API
• MIME-type: application/hal+json
Благодаря HAL
• Клиент знает, что и как может сделать с объектом
• Сервер может управлять набором доступных действий
![Page 51: Разработка RESTful api with all bells and whistles](https://reader035.fdocuments.in/reader035/viewer/2022081513/5594bf5c1a28ab93748b4604/html5/thumbnails/51.jpg)
51
Обычное API
# пусть у нас есть объект папки
print folder
{
“name”: “foo”,
“path”: “disk:/foo”,
“type”: “dir”
}
# удаляем папку
URL = 'https://cloud-api.yandex.net/v1/disk/resources'
query = {}
query['path'] = folder['path']
query['permanently'] = True
qs = urlencode(query)
url = URL + '?' + qs
request('DELETE', url)
<Response [204]>
![Page 52: Разработка RESTful api with all bells and whistles](https://reader035.fdocuments.in/reader035/viewer/2022081513/5594bf5c1a28ab93748b4604/html5/thumbnails/52.jpg)
52
Hypermedia API
# пусть у нас есть объект папки с HAL-ссылками
print folder {
"_links": {
"delete": {
"href": "https://cloud-
api.yandex.net/v1/disk/resources?path=disk%3A%2Ffoo&permanently=True",
"method": "DELETE"
},
},
“name”: “foo”,
“path”: “disk:/foo”,
“type”: “dir”
}
# удаляем папку
action = folder[‘_links’][‘delete’]
request(action[‘method’], action[‘href’])
<Response [204]>
![Page 53: Разработка RESTful api with all bells and whistles](https://reader035.fdocuments.in/reader035/viewer/2022081513/5594bf5c1a28ab93748b4604/html5/thumbnails/53.jpg)
53
Self-describing & Machine-readable
Машиночитаемые способы описания REST API
• RAML
• WADL
• JSON Schema + JSON HyperSchema
• Swagger
• IO Docs
• Apiary Blueprints
![Page 54: Разработка RESTful api with all bells and whistles](https://reader035.fdocuments.in/reader035/viewer/2022081513/5594bf5c1a28ab93748b4604/html5/thumbnails/54.jpg)
54
Swagger
• Описывает API в виде JSON
• Развивается как стандарт
• Прост для понимания
• Имеет экосистему инструментов
![Page 55: Разработка RESTful api with all bells and whistles](https://reader035.fdocuments.in/reader035/viewer/2022081513/5594bf5c1a28ab93748b4604/html5/thumbnails/55.jpg)
55
Swagger описывает
• Структуру API
• Параметры операций над ресурсами
• Структуру возвращаемых объектов
![Page 56: Разработка RESTful api with all bells and whistles](https://reader035.fdocuments.in/reader035/viewer/2022081513/5594bf5c1a28ab93748b4604/html5/thumbnails/56.jpg)
56
Профит от Swagger
• Универсальные Swagger-клиенты
• Автогенерация частей нативных SDK
• Готовый open source UI для API
![Page 57: Разработка RESTful api with all bells and whistles](https://reader035.fdocuments.in/reader035/viewer/2022081513/5594bf5c1a28ab93748b4604/html5/thumbnails/57.jpg)
57
tech.yandex.ru/disk/poligon
![Page 58: Разработка RESTful api with all bells and whistles](https://reader035.fdocuments.in/reader035/viewer/2022081513/5594bf5c1a28ab93748b4604/html5/thumbnails/58.jpg)
58
Что в итоге получилось
![Page 59: Разработка RESTful api with all bells and whistles](https://reader035.fdocuments.in/reader035/viewer/2022081513/5594bf5c1a28ab93748b4604/html5/thumbnails/59.jpg)
59
Что в итоге получилось
• Понятная и расширяемая структура
Удобная навигация по API с помощью ссылок
Самодокументируемость и машиночитаемость
![Page 60: Разработка RESTful api with all bells and whistles](https://reader035.fdocuments.in/reader035/viewer/2022081513/5594bf5c1a28ab93748b4604/html5/thumbnails/60.jpg)
60
Что в итоге получилось
• Понятная и расширяемая структура
• Удобная навигация по API с помощью ссылок
Самодокументируемость и машиночитаемость
![Page 61: Разработка RESTful api with all bells and whistles](https://reader035.fdocuments.in/reader035/viewer/2022081513/5594bf5c1a28ab93748b4604/html5/thumbnails/61.jpg)
61
Что в итоге получилось
• Понятная и расширяемая структура
• Удобная навигация по API с помощью ссылок
• Самодокументируемость и машиночитаемость
![Page 62: Разработка RESTful api with all bells and whistles](https://reader035.fdocuments.in/reader035/viewer/2022081513/5594bf5c1a28ab93748b4604/html5/thumbnails/62.jpg)
62
Рецепт правильного REST API
![Page 63: Разработка RESTful api with all bells and whistles](https://reader035.fdocuments.in/reader035/viewer/2022081513/5594bf5c1a28ab93748b4604/html5/thumbnails/63.jpg)
63
Рецепт правильного REST API
• Структура в виде ресурсов и операций над ними
Доступ к объектам через коллекции
Старайтесь придерживаться RFC 2616
Используйте Ad Hoc-методы там где не хватает HTTP
Добавляйте в API hypermedia-контролы
HAL – http://stateless.co/hal_specification.html
Описывайте API с помощью машиночитаемых форматов
Swagger – https://helloreverb.com/developers/swagger
![Page 64: Разработка RESTful api with all bells and whistles](https://reader035.fdocuments.in/reader035/viewer/2022081513/5594bf5c1a28ab93748b4604/html5/thumbnails/64.jpg)
64
Рецепт правильного REST API
• Структура в виде ресурсов и операций над ними
• Доступ к объектам через коллекции
Старайтесь придерживаться RFC 2616
Используйте Ad Hoc-методы там где не хватает HTTP
Добавляйте в API hypermedia-контролы
HAL – http://stateless.co/hal_specification.html
Описывайте API с помощью машиночитаемых форматов
Swagger – https://helloreverb.com/developers/swagger
![Page 65: Разработка RESTful api with all bells and whistles](https://reader035.fdocuments.in/reader035/viewer/2022081513/5594bf5c1a28ab93748b4604/html5/thumbnails/65.jpg)
65
Рецепт правильного REST API
• Структура в виде ресурсов и операций над ними
• Доступ к объектам через коллекции
• Старайтесь придерживаться RFC 2616
Используйте Ad Hoc-методы там где не хватает HTTP
Добавляйте в API hypermedia-контролы
HAL – http://stateless.co/hal_specification.html
Описывайте API с помощью машиночитаемых форматов
Swagger – https://helloreverb.com/developers/swagger
![Page 66: Разработка RESTful api with all bells and whistles](https://reader035.fdocuments.in/reader035/viewer/2022081513/5594bf5c1a28ab93748b4604/html5/thumbnails/66.jpg)
66
Рецепт правильного REST API
• Структура в виде ресурсов и операций над ними
• Доступ к объектам через коллекции
• Старайтесь придерживаться RFC 2616
• Используйте Ad Hoc-методы там где не хватает HTTP
Добавляйте в API hypermedia-контролы
HAL – http://stateless.co/hal_specification.html
Описывайте API с помощью машиночитаемых форматов
Swagger – https://helloreverb.com/developers/swagger
![Page 67: Разработка RESTful api with all bells and whistles](https://reader035.fdocuments.in/reader035/viewer/2022081513/5594bf5c1a28ab93748b4604/html5/thumbnails/67.jpg)
67
Рецепт правильного REST API
• Структура в виде ресурсов и операций над ними
• Доступ к объектам через коллекции
• Старайтесь придерживаться RFC 2616
• Используйте Ad Hoc-методы там где не хватает HTTP
• Добавляйте в API hypermedia-контролы
HAL – http://stateless.co/hal_specification.html
Описывайте API с помощью машиночитаемых форматов
Swagger – https://helloreverb.com/developers/swagger
![Page 68: Разработка RESTful api with all bells and whistles](https://reader035.fdocuments.in/reader035/viewer/2022081513/5594bf5c1a28ab93748b4604/html5/thumbnails/68.jpg)
68
Рецепт правильного REST API
• Структура в виде ресурсов и операций над ними
• Доступ к объектам через коллекции
• Старайтесь придерживаться RFC 2616
• Используйте Ad Hoc-методы там где не хватает HTTP
• Добавляйте в API hypermedia-контролы
HAL – http://stateless.co/hal_specification.html
• Описывайте API с помощью машиночитаемых форматов
Swagger – https://helloreverb.com/developers/swagger
![Page 69: Разработка RESTful api with all bells and whistles](https://reader035.fdocuments.in/reader035/viewer/2022081513/5594bf5c1a28ab93748b4604/html5/thumbnails/69.jpg)
69
Для чего использовать API Диска
• Работа с контентом пользователей
• Синхронизация данных между устройствами
• Хранение user-related данных приложений
![Page 70: Разработка RESTful api with all bells and whistles](https://reader035.fdocuments.in/reader035/viewer/2022081513/5594bf5c1a28ab93748b4604/html5/thumbnails/70.jpg)
70
Спасибо за внимание!
![Page 71: Разработка RESTful api with all bells and whistles](https://reader035.fdocuments.in/reader035/viewer/2022081513/5594bf5c1a28ab93748b4604/html5/thumbnails/71.jpg)
71
Роман Акинфеев
Разработчик back-end и REST API Яндекс.Диска
Клуб разработчиков:
Сервис «Полигон»: tech.yandex.ru/disk/poligon
clubs.ya.ru/apidisk/