51
Построение успешных API Андрей Чебукин The Secret Circle Solutions КА ШАГ

Андрей Чебукин "Построение успешных API"

  • Upload
    fwdays

  • View
    99

  • Download
    6

Embed Size (px)

Citation preview

Page 1: Андрей Чебукин "Построение успешных API"

Построение успешных APIАндрей ЧебукинThe Secret Circle SolutionsКА ШАГ

Page 2: Андрей Чебукин "Построение успешных API"

Построение успешных API

Андрей ЧебукинThe Secret Circle Solutions / КА ШАГ

Page 3: Андрей Чебукин "Построение успешных API"

Андрей Чебукин•Student Partner•MCSD: Windows 8 C#•Преподаватель: КА ШАГ•Соучредитель: The Secret Circle Solutions•Интересы: F#, functional programming, ALM, Azure

Page 4: Андрей Чебукин "Построение успешных API"

О чём•Что такое API•Какие API успешны в использовании•Как сделать успешные в использовании API

Page 5: Андрей Чебукин "Построение успешных API"

Как расшифровывается API?•Application•Programming•Interface

•интерфейс программирования приложений•интерфейс прикладного программирования

Page 6: Андрей Чебукин "Построение успешных API"

Что такое API•Структуры/типы данных•Операции•Сценарии использования

Page 7: Андрей Чебукин "Построение успешных API"

Какие API успешные?1.Лёгкие в употреблении (TTFSC, TTFHW)2.Понятно как нужно, нельзя как не нужно3.Ничего не ломается при обновлении4.Getting started,

Multi-language code samples, SDKs

https://www.slideshare.net/biztalk360/everybody-loves-swagger

Page 8: Андрей Чебукин "Построение успешных API"

Как узнать API?•Исходники•Метаданные•Документация•IDL

https://www.slideshare.net/whitlockjc/building-apis-with-nodejs-and-swagger

Page 10: Андрей Чебукин "Построение успешных API"

Interface Description LanguageInterface Definition Language •OMG (Object Management Group, CORBA)•Microsoft Interface Definition Language•WADL (Web Application Description Language)•WSDL (Web Services Description Language)•RSDL (RESTful Service Description Language)•Swagger•Protocol Buffers•Apache Thrift

Page 11: Андрей Чебукин "Построение успешных API"

Open APISwagger

Page 12: Андрей Чебукин "Построение успешных API"

Swagger это…ТехнологияСпецификация для•Описания•Документирования

REST API

МетодологияНабор средств для•Создания•Употребления•ВизуализацииREST API

https://www.slideshare.net/VictorTrakhtenberg/swagger2

Page 13: Андрей Чебукин "Построение успешных API"

Спецификация Swagger•JSON, чтобы определять метаданные•JSON, чтобы определять структуру API•JSON схема•Машиночитаемая•Независимая от языка программирования

Page 14: Андрей Чебукин "Построение успешных API"

Редакторы•Swagger Editor•editor.swagger.io

•Editor + swagger.js•apistudio.io

•Restlet studio (cross-format editor)• studio.restlet.com

https://www.slideshare.net/biztalk360/everybody-loves-swagger

Page 15: Андрей Чебукин "Построение успешных API"

DEMOSwagger Editor

Page 16: Андрей Чебукин "Построение успешных API"

Подходы к разработкеSpecification first1.Реализую API2.Вставляю

пояснения на месте

Implementation first1.Пишу JSON

спецификацию2.Генерирую

заглушки API3.Реализую APIs4.Публикую

Page 17: Андрей Чебукин "Построение успешных API"

Swashbuckle•Swagger на ASP.NET

Page 18: Андрей Чебукин "Построение успешных API"

Библиотека авто-генерации swagger.json•Использует ApiExplorer•Автогенерация•Точки расширения

•Легко найти спецификацию•Ничего не добавляет в реализацию

Page 19: Андрей Чебукин "Построение успешных API"

SwashbukleASP.NET Core.NETFramework 4.5.1 / .NETStandard 1.6• Swashbuckle.AspNetCore 1.0.0-rc3• Swashbuckle.AspNetCore.Swagger• Swashbuckle.AspNetCore.SwaggerGen• Swashbuckle.AspNetCore.SwaggerUI

ASP.NET Classic.NETFramework 4.5.1 • Swashbuckle 6.0.0-beta902• Swashbuckle.Swagger• Swashbuckle.SwaggerGen• Swashbuckle.SwaggerUi

Page 20: Андрей Чебукин "Построение успешных API"

200 по умолчанию

Page 21: Андрей Чебукин "Построение успешных API"

Явные ответы

Page 22: Андрей Чебукин "Построение успешных API"

XML комменты -> дока

Page 23: Андрей Чебукин "Построение успешных API"

Ещё•Версии спецификации•Фильтры•Определения способов авторизации•UI для просмотра и тестирования•C возможностью изменения и брендинга•С поддержкой сценариев OAuth 2

Page 24: Андрей Чебукин "Построение успешных API"

DEMOSwashbuckle

Page 25: Андрей Чебукин "Построение успешных API"

Успешные API1.Лёгкие в употреблении (TTFSC, TTFHW)2.Понятно как нужно, нельзя как не нужно3.Ничего не ломается при обновлении4.Getting started, Multi language code

samples, SDKs

https://www.slideshare.net/biztalk360/everybody-loves-swagger

Page 26: Андрей Чебукин "Построение успешных API"

Ломающие изменения•Удаление или переименование API или параметров API•Изменения в поведении для существующего API•Изменения в кодах ошибки и контрактах отказа•Что-либо, что нарушило бы Принцип наименьшего удивления

Page 27: Андрей Чебукин "Построение успешных API"

ASP.NET Rounting•Template•Attribute

Page 28: Андрей Чебукин "Построение успешных API"

Template

Page 29: Андрей Чебукин "Построение успешных API"

Attribute

Page 30: Андрей Чебукин "Построение успешных API"

А если нужно что-то изменить?Верс

ионирова

ние

!

Page 31: Андрей Чебукин "Построение успешных API"

Способы версионирования•По параметру строки запроса•По заголовку•По сегменту URL пути

Page 32: Андрей Чебукин "Построение успешных API"

ASP.NET Versioning•https://github.com/Microsoft/aspnet-api-versioning

Page 33: Андрей Чебукин "Построение успешных API"

Способы версионирования в ASP.NET API Versioning•По параметру строки запроса api-version=1.0•По заголовку•api-version или x-ms-version•Accept (media type) application/json;q=0.2;v=1.0

•По параметру строки запроса или заголовку•По сегменту URL пути

Page 34: Андрей Чебукин "Построение успешных API"

Request URL Matched Controller

/api/helloworld?api-version=1.0 HelloWorldController

/api/helloworld?api-version=2.0 HelloWorld2Controller

Page 35: Андрей Чебукин "Построение успешных API"

Request URL Matched Controller Matched Action/api/v1/helloworld HelloWorldController Get/api/v2/helloworld HelloWorld2Controller Get/api/v3/helloworld HelloWorld2Controller GetV3

Page 36: Андрей Чебукин "Построение успешных API"

Независимость от версии

Page 37: Андрей Чебукин "Построение успешных API"

DEMOASP.NET API Versioning

Page 38: Андрей Чебукин "Построение успешных API"

Как подружить Swashbuckle и ASP.NET API Versioning?•IOperationFilter•IDocumentFilter

Page 39: Андрей Чебукин "Построение успешных API"

Удалить version параметр

Page 40: Андрей Чебукин "Построение успешных API"

Проставить version в пути

Page 41: Андрей Чебукин "Построение успешных API"

Включить в док по версии

Page 42: Андрей Чебукин "Построение успешных API"
Page 43: Андрей Чебукин "Построение успешных API"

DEMOSwagger + ASP.NET API Versioning

Page 44: Андрей Чебукин "Построение успешных API"

Успешные API1.Лёгкие в употреблении (TTFSC, TTFHW)2.Понятно как нужно, нельзя как не нужно3.Ничего не ломается при обновлении4.Getting started, Multi language code

samples, SDKs

https://www.slideshare.net/biztalk360/everybody-loves-swagger

Page 45: Андрей Чебукин "Построение успешных API"

Что прикольного было в WSDL?

Page 46: Андрей Чебукин "Построение успешных API"
Page 47: Андрей Чебукин "Построение успешных API"
Page 48: Андрей Чебукин "Построение успешных API"
Page 49: Андрей Чебукин "Построение успешных API"

Swagger + ASP.NET API Versioning = Успешные API1.Лёгкие в употреблении2.Понятные3.Не ломаются

при обновлении4.Multi-language

generated code

Page 50: Андрей Чебукин "Построение успешных API"

Спасибо за внимание

Клацніть піктограму, щоб додати зображення

GitHubgithub.com/xperiandri/Socialfb.com/xperiandrivk.com/xperiandritwitter.com/xperiandriYouTubeyoutube.com/user/andriicsharp

Page 51: Андрей Чебукин "Построение успешных API"

Спасибо за внимание

fb.com/xperiandritwitter.com/xperiandri

vk.com/[email protected]