Upgrade to Pro — share decks privately, control downloads, hide ads and more …

«Как спроектировать и задокументировать хорошую...

Redmadrobot
September 20, 2019

«Как спроектировать и задокументировать хорошую спецификацию API»

Андрей Муравьёв, руководитель отдела серверной разработки

Redmadrobot

September 20, 2019
Tweet

More Decks by Redmadrobot

Other Decks in Technology

Transcript

  1. 3 REST refresher 1. Representational State Transfer 
 Архитектурный стиль,

    а не стандарт 2. Имеет ряд требований и свойств
 Объектное взаимодействие, идентификация ресурсов (URI), отсутствие состояния, etc.
 3. Может использоваться разный транспорт
 HTTP — необязательное требование для REST
 4. Могут использоваться разные форматы представления данных
 JSON — необязательное требование для REST
  2. 4 Stateful Stateless Клиент: Кто такой Стив Джобс? Сервер: Основатель

    Apple Клиент: Когда он родился? Сервер: 24 февраля 1955 г. Клиент: Кто такой Стив Джобс? Сервер: Основатель Apple Клиент: Когда он родился? Сервер: Кто «он»?
  3. 7 Interface Segregation Лучше несколько маленьких интерфейсов, чем один большой

    GET https://example.com/api/news { news: [ { "title": "...", "content": "..." } ] } GET https://example.com/api/users/573 { news: { "title": "...", "content": "..." } } GET https://example.com/api/main { news: [ { "title": "...", "content": "..." } ], user: { "name": "...", "userpic_url": "..." }, banners: [{ ... }] }
  4. 11 Предпочтительно иметь один и только один способ сделать что-то

    GET https://example.com/api/objects GET https://example.com/api/admin/objects/ GET https://example.com/api/manager-objects/
  5. 13 Безопасность и идемпотентность Идемпотентные: GET, HEAD, OPTIONS, PUT, DELETE

    Не идемпотентные: POST, PATCH Безопасные: GET, HEAD, OPTIONS
  6. 14 Формат ошибок Не привязываемся к HTTP-коду { "error": {

    "code": "validation_error", "message": "Ошибка валидации данных", "incorrect_fields": [ { "name": "password", "description": "Пароль должен быть не менее 8 символов" } ] } } { "error": { "code": "cvs_processing_error", "message": "Некорректный csv-файл", } }
  7. There are only two hard things in Computer Science: cache

    invalidation and naming things. Phil Karlton
  8. 28 
 Тесты API 
 Документация 
 Реализация
 на сервере

    Клиент 
 mock-сервер &'
 Разработчики
  9. 31 
 Тесты API 
 Документация 
 Реализация
 на сервере

    Клиент 
 mock-сервер &'
 Разработчики 
 OpenAPI-спецификация 31