Андрей Чебукин "Построение успешных api"
TRANSCRIPT
![Page 1: Андрей Чебукин "Построение успешных API"](https://reader036.vdocument.in/reader036/viewer/2022062302/58e4a5bd1a28abf5428b6f05/html5/thumbnails/1.jpg)
Построение успешных APIАндрей ЧебукинThe Secret Circle SolutionsКА ШАГ
![Page 2: Андрей Чебукин "Построение успешных API"](https://reader036.vdocument.in/reader036/viewer/2022062302/58e4a5bd1a28abf5428b6f05/html5/thumbnails/2.jpg)
Построение успешных API
Андрей ЧебукинThe Secret Circle Solutions / КА ШАГ
![Page 3: Андрей Чебукин "Построение успешных API"](https://reader036.vdocument.in/reader036/viewer/2022062302/58e4a5bd1a28abf5428b6f05/html5/thumbnails/3.jpg)
Андрей Чебукин•Student Partner•MCSD: Windows 8 C#•Преподаватель: КА ШАГ•Соучредитель: The Secret Circle Solutions•Интересы: F#, functional programming, ALM, Azure
![Page 4: Андрей Чебукин "Построение успешных API"](https://reader036.vdocument.in/reader036/viewer/2022062302/58e4a5bd1a28abf5428b6f05/html5/thumbnails/4.jpg)
О чём•Что такое API•Какие API успешны в использовании•Как сделать успешные в использовании API
![Page 5: Андрей Чебукин "Построение успешных API"](https://reader036.vdocument.in/reader036/viewer/2022062302/58e4a5bd1a28abf5428b6f05/html5/thumbnails/5.jpg)
Как расшифровывается API?•Application•Programming•Interface
•интерфейс программирования приложений•интерфейс прикладного программирования
![Page 6: Андрей Чебукин "Построение успешных API"](https://reader036.vdocument.in/reader036/viewer/2022062302/58e4a5bd1a28abf5428b6f05/html5/thumbnails/6.jpg)
Что такое API•Структуры/типы данных•Операции•Сценарии использования
![Page 7: Андрей Чебукин "Построение успешных API"](https://reader036.vdocument.in/reader036/viewer/2022062302/58e4a5bd1a28abf5428b6f05/html5/thumbnails/7.jpg)
Какие 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"](https://reader036.vdocument.in/reader036/viewer/2022062302/58e4a5bd1a28abf5428b6f05/html5/thumbnails/8.jpg)
Как узнать API?•Исходники•Метаданные•Документация•IDL
https://www.slideshare.net/whitlockjc/building-apis-with-nodejs-and-swagger
![Page 9: Андрей Чебукин "Построение успешных API"](https://reader036.vdocument.in/reader036/viewer/2022062302/58e4a5bd1a28abf5428b6f05/html5/thumbnails/9.jpg)
Документи-рование APIhttps://github.com/nazar-pc/opir.org/wiki
![Page 10: Андрей Чебукин "Построение успешных API"](https://reader036.vdocument.in/reader036/viewer/2022062302/58e4a5bd1a28abf5428b6f05/html5/thumbnails/10.jpg)
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"](https://reader036.vdocument.in/reader036/viewer/2022062302/58e4a5bd1a28abf5428b6f05/html5/thumbnails/11.jpg)
Open APISwagger
![Page 12: Андрей Чебукин "Построение успешных API"](https://reader036.vdocument.in/reader036/viewer/2022062302/58e4a5bd1a28abf5428b6f05/html5/thumbnails/12.jpg)
Swagger это…ТехнологияСпецификация для•Описания•Документирования
REST API
МетодологияНабор средств для•Создания•Употребления•ВизуализацииREST API
https://www.slideshare.net/VictorTrakhtenberg/swagger2
![Page 13: Андрей Чебукин "Построение успешных API"](https://reader036.vdocument.in/reader036/viewer/2022062302/58e4a5bd1a28abf5428b6f05/html5/thumbnails/13.jpg)
Спецификация Swagger•JSON, чтобы определять метаданные•JSON, чтобы определять структуру API•JSON схема•Машиночитаемая•Независимая от языка программирования
![Page 14: Андрей Чебукин "Построение успешных API"](https://reader036.vdocument.in/reader036/viewer/2022062302/58e4a5bd1a28abf5428b6f05/html5/thumbnails/14.jpg)
Редакторы•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"](https://reader036.vdocument.in/reader036/viewer/2022062302/58e4a5bd1a28abf5428b6f05/html5/thumbnails/15.jpg)
DEMOSwagger Editor
![Page 16: Андрей Чебукин "Построение успешных API"](https://reader036.vdocument.in/reader036/viewer/2022062302/58e4a5bd1a28abf5428b6f05/html5/thumbnails/16.jpg)
Подходы к разработкеSpecification first1.Реализую API2.Вставляю
пояснения на месте
Implementation first1.Пишу JSON
спецификацию2.Генерирую
заглушки API3.Реализую APIs4.Публикую
![Page 17: Андрей Чебукин "Построение успешных API"](https://reader036.vdocument.in/reader036/viewer/2022062302/58e4a5bd1a28abf5428b6f05/html5/thumbnails/17.jpg)
Swashbuckle•Swagger на ASP.NET
![Page 18: Андрей Чебукин "Построение успешных API"](https://reader036.vdocument.in/reader036/viewer/2022062302/58e4a5bd1a28abf5428b6f05/html5/thumbnails/18.jpg)
Библиотека авто-генерации swagger.json•Использует ApiExplorer•Автогенерация•Точки расширения
•Легко найти спецификацию•Ничего не добавляет в реализацию
![Page 19: Андрей Чебукин "Построение успешных API"](https://reader036.vdocument.in/reader036/viewer/2022062302/58e4a5bd1a28abf5428b6f05/html5/thumbnails/19.jpg)
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"](https://reader036.vdocument.in/reader036/viewer/2022062302/58e4a5bd1a28abf5428b6f05/html5/thumbnails/20.jpg)
200 по умолчанию
![Page 21: Андрей Чебукин "Построение успешных API"](https://reader036.vdocument.in/reader036/viewer/2022062302/58e4a5bd1a28abf5428b6f05/html5/thumbnails/21.jpg)
Явные ответы
![Page 22: Андрей Чебукин "Построение успешных API"](https://reader036.vdocument.in/reader036/viewer/2022062302/58e4a5bd1a28abf5428b6f05/html5/thumbnails/22.jpg)
XML комменты -> дока
![Page 23: Андрей Чебукин "Построение успешных API"](https://reader036.vdocument.in/reader036/viewer/2022062302/58e4a5bd1a28abf5428b6f05/html5/thumbnails/23.jpg)
Ещё•Версии спецификации•Фильтры•Определения способов авторизации•UI для просмотра и тестирования•C возможностью изменения и брендинга•С поддержкой сценариев OAuth 2
![Page 24: Андрей Чебукин "Построение успешных API"](https://reader036.vdocument.in/reader036/viewer/2022062302/58e4a5bd1a28abf5428b6f05/html5/thumbnails/24.jpg)
DEMOSwashbuckle
![Page 25: Андрей Чебукин "Построение успешных API"](https://reader036.vdocument.in/reader036/viewer/2022062302/58e4a5bd1a28abf5428b6f05/html5/thumbnails/25.jpg)
Успешные API1.Лёгкие в употреблении (TTFSC, TTFHW)2.Понятно как нужно, нельзя как не нужно3.Ничего не ломается при обновлении4.Getting started, Multi language code
samples, SDKs
https://www.slideshare.net/biztalk360/everybody-loves-swagger
![Page 26: Андрей Чебукин "Построение успешных API"](https://reader036.vdocument.in/reader036/viewer/2022062302/58e4a5bd1a28abf5428b6f05/html5/thumbnails/26.jpg)
Ломающие изменения•Удаление или переименование API или параметров API•Изменения в поведении для существующего API•Изменения в кодах ошибки и контрактах отказа•Что-либо, что нарушило бы Принцип наименьшего удивления
![Page 27: Андрей Чебукин "Построение успешных API"](https://reader036.vdocument.in/reader036/viewer/2022062302/58e4a5bd1a28abf5428b6f05/html5/thumbnails/27.jpg)
ASP.NET Rounting•Template•Attribute
![Page 28: Андрей Чебукин "Построение успешных API"](https://reader036.vdocument.in/reader036/viewer/2022062302/58e4a5bd1a28abf5428b6f05/html5/thumbnails/28.jpg)
Template
![Page 29: Андрей Чебукин "Построение успешных API"](https://reader036.vdocument.in/reader036/viewer/2022062302/58e4a5bd1a28abf5428b6f05/html5/thumbnails/29.jpg)
Attribute
![Page 30: Андрей Чебукин "Построение успешных API"](https://reader036.vdocument.in/reader036/viewer/2022062302/58e4a5bd1a28abf5428b6f05/html5/thumbnails/30.jpg)
А если нужно что-то изменить?Верс
ионирова
ние
!
![Page 31: Андрей Чебукин "Построение успешных API"](https://reader036.vdocument.in/reader036/viewer/2022062302/58e4a5bd1a28abf5428b6f05/html5/thumbnails/31.jpg)
Способы версионирования•По параметру строки запроса•По заголовку•По сегменту URL пути
![Page 32: Андрей Чебукин "Построение успешных API"](https://reader036.vdocument.in/reader036/viewer/2022062302/58e4a5bd1a28abf5428b6f05/html5/thumbnails/32.jpg)
ASP.NET Versioning•https://github.com/Microsoft/aspnet-api-versioning
![Page 33: Андрей Чебукин "Построение успешных API"](https://reader036.vdocument.in/reader036/viewer/2022062302/58e4a5bd1a28abf5428b6f05/html5/thumbnails/33.jpg)
Способы версионирования в 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"](https://reader036.vdocument.in/reader036/viewer/2022062302/58e4a5bd1a28abf5428b6f05/html5/thumbnails/34.jpg)
Request URL Matched Controller
/api/helloworld?api-version=1.0 HelloWorldController
/api/helloworld?api-version=2.0 HelloWorld2Controller
![Page 35: Андрей Чебукин "Построение успешных API"](https://reader036.vdocument.in/reader036/viewer/2022062302/58e4a5bd1a28abf5428b6f05/html5/thumbnails/35.jpg)
Request URL Matched Controller Matched Action/api/v1/helloworld HelloWorldController Get/api/v2/helloworld HelloWorld2Controller Get/api/v3/helloworld HelloWorld2Controller GetV3
![Page 36: Андрей Чебукин "Построение успешных API"](https://reader036.vdocument.in/reader036/viewer/2022062302/58e4a5bd1a28abf5428b6f05/html5/thumbnails/36.jpg)
Независимость от версии
![Page 37: Андрей Чебукин "Построение успешных API"](https://reader036.vdocument.in/reader036/viewer/2022062302/58e4a5bd1a28abf5428b6f05/html5/thumbnails/37.jpg)
DEMOASP.NET API Versioning
![Page 38: Андрей Чебукин "Построение успешных API"](https://reader036.vdocument.in/reader036/viewer/2022062302/58e4a5bd1a28abf5428b6f05/html5/thumbnails/38.jpg)
Как подружить Swashbuckle и ASP.NET API Versioning?•IOperationFilter•IDocumentFilter
![Page 39: Андрей Чебукин "Построение успешных API"](https://reader036.vdocument.in/reader036/viewer/2022062302/58e4a5bd1a28abf5428b6f05/html5/thumbnails/39.jpg)
Удалить version параметр
![Page 40: Андрей Чебукин "Построение успешных API"](https://reader036.vdocument.in/reader036/viewer/2022062302/58e4a5bd1a28abf5428b6f05/html5/thumbnails/40.jpg)
Проставить version в пути
![Page 41: Андрей Чебукин "Построение успешных API"](https://reader036.vdocument.in/reader036/viewer/2022062302/58e4a5bd1a28abf5428b6f05/html5/thumbnails/41.jpg)
Включить в док по версии
![Page 42: Андрей Чебукин "Построение успешных API"](https://reader036.vdocument.in/reader036/viewer/2022062302/58e4a5bd1a28abf5428b6f05/html5/thumbnails/42.jpg)
![Page 43: Андрей Чебукин "Построение успешных API"](https://reader036.vdocument.in/reader036/viewer/2022062302/58e4a5bd1a28abf5428b6f05/html5/thumbnails/43.jpg)
DEMOSwagger + ASP.NET API Versioning
![Page 44: Андрей Чебукин "Построение успешных API"](https://reader036.vdocument.in/reader036/viewer/2022062302/58e4a5bd1a28abf5428b6f05/html5/thumbnails/44.jpg)
Успешные API1.Лёгкие в употреблении (TTFSC, TTFHW)2.Понятно как нужно, нельзя как не нужно3.Ничего не ломается при обновлении4.Getting started, Multi language code
samples, SDKs
https://www.slideshare.net/biztalk360/everybody-loves-swagger
![Page 45: Андрей Чебукин "Построение успешных API"](https://reader036.vdocument.in/reader036/viewer/2022062302/58e4a5bd1a28abf5428b6f05/html5/thumbnails/45.jpg)
Что прикольного было в WSDL?
![Page 46: Андрей Чебукин "Построение успешных API"](https://reader036.vdocument.in/reader036/viewer/2022062302/58e4a5bd1a28abf5428b6f05/html5/thumbnails/46.jpg)
![Page 47: Андрей Чебукин "Построение успешных API"](https://reader036.vdocument.in/reader036/viewer/2022062302/58e4a5bd1a28abf5428b6f05/html5/thumbnails/47.jpg)
![Page 48: Андрей Чебукин "Построение успешных API"](https://reader036.vdocument.in/reader036/viewer/2022062302/58e4a5bd1a28abf5428b6f05/html5/thumbnails/48.jpg)
![Page 49: Андрей Чебукин "Построение успешных API"](https://reader036.vdocument.in/reader036/viewer/2022062302/58e4a5bd1a28abf5428b6f05/html5/thumbnails/49.jpg)
Swagger + ASP.NET API Versioning = Успешные API1.Лёгкие в употреблении2.Понятные3.Не ломаются
при обновлении4.Multi-language
generated code
![Page 50: Андрей Чебукин "Построение успешных API"](https://reader036.vdocument.in/reader036/viewer/2022062302/58e4a5bd1a28abf5428b6f05/html5/thumbnails/50.jpg)
Спасибо за внимание
Клацніть піктограму, щоб додати зображення
GitHubgithub.com/xperiandri/Socialfb.com/xperiandrivk.com/xperiandritwitter.com/xperiandriYouTubeyoutube.com/user/andriicsharp