Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
API Blueprint
Search
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
Dmitry Efimov
September 07, 2016
Programming
89
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
API Blueprint
Tools
Dmitry Efimov
September 07, 2016
More Decks by Dmitry Efimov
See All by Dmitry Efimov
Автоматизируем синхронизацию HTTP API и документации
tuwilof
0
51
Автоматизация Document-Driven Development для проектов с большим API
tuwilof
0
52
Инструменты для обнаружения рассинхронизации реализации “REST” API от документации
tuwilof
0
58
Валидация “REST” API по документации APIB
tuwilof
0
48
Негативное тестирование “REST” API и защита от него
tuwilof
0
350
Ликбез по JSON
tuwilof
0
93
Документирование API
tuwilof
0
200
Почему и как заменить все id на UUID
tuwilof
0
110
Authentication in rails. Monolith vs SPA
tuwilof
0
220
Other Decks in Programming
See All in Programming
変化を抱擁するドキュメントの作り方 - ビジネスルール駆動開発がもたらす、コードとの新しい関係
ioki
2
120
LoopHub - ローカルで動く GitHub で、AI と共同開発
jugyo
1
470
AI に Inclusive UI を書かせよう — Design Rules Skill で Compose UI を作り直す
theoriatec2024
1
460
AIは賢い。でも実行環境は? CLIおじさんがAI時代に伝えたいこと ~ CLIおじさんがAI時代に伝えたいこと ~
curekoshimizu
1
190
Kiroで創り、AgentCoreで繋ぐ!AWSで実践する「AI-DLC」から「AIエージェント統合」までの最新地図
licux
3
370
20260828_品質と開発生産性を両立させる、AI時代のE2Eテストの考え方
magicpod
0
170
巨大モノリシックアプリ モダン化大作戦
ktcryomm
0
140
AI Agent時代のリアーキテクチャ戦略と実践
hokaccha
4
1.7k
週末にAI-DLCを本気で回したら$1,600溶けた
hbashimizu
0
130
thread_parallel_with_free-threaded_Python_and_NumPy.pdf
riku_sakamoto
0
160
Seeing Through Serverless: Observability for AWS Lambda with ADOT and CloudWatch Application Signals
seike460
PRO
1
130
DynamoDBの基礎を振り返りながらベクトル検索機能を理解する
musan
3
270
Featured
See All Featured
The B2B funnel & how to create a winning content strategy
katarinadahlin
PRO
1
510
Winning Ecommerce Organic Search in an AI Era - #searchnstuff2025
aleyda
1
2.1k
The Cost Of JavaScript in 2023
addyosmani
55
10k
Prompt Engineering for Job Search
mfonobong
0
450
The Impact of AI in SEO - AI Overviews June 2024 Edition
aleyda
6
1.2k
Measuring & Analyzing Core Web Vitals
bluesmoon
9
990
Product Roadmaps are Hard
iamctodd
55
13k
Test your architecture with Archunit
thirion
2
2.4k
Designing Experiences People Love
moore
143
24k
Beyond borders and beyond the search box: How to win the global "messy middle" with AI-driven SEO
davidcarrasco
3
240
16th Malabo Montpellier Forum Presentation
akademiya2063
PRO
0
370
The Limits of Empathy - UXLibs8
cassininazir
1
640
Transcript
API Blueprint
типичная документация по API = route + json
типичная документация на API Blueprint = AST Markdown + MSON
JSON-SCHEMA
Рассмотрим на примере самого простого микросервиса
требуемый функционал Request: curl -v -X GET http://localhost:3000/status Response: <
HTTP/1.1 200 OK
документация API = route + json
исходный текст в API Blueprint # Микросервис ## Статус [/status]
### Проверить [GET] Узнать статус микросервиса + Request + Response 200
Tools • Editors •Parsers •Renders •Testing •Mock servers •Others
apiary.io
apiary.io
apiary.io
Atom editor language
Vim, Emacs, Visual Studio Code
Tools •Editors • Parsers •Renders •Testing •Mock servers •Others
Drafter drafter doc.apib (default YAML) element: "parseResult" content: - element:
"category" meta: classes: - "api" title: "Микросервис" content: - element: "category" meta: classes: - "resourceGroup" title: "" content: - element: "resource" meta: title: "Статус" attributes: href: "/status" content: - element: "transition" meta: title: "Проверить" content: - element: "copy" content: "Узнать статус микросервиса\n" - element: "httpTransaction" content: - element: "httpRequest" attributes: method: "GET" content: [] - element: "httpResponse" attributes: statusCode: "200" content: [] - element: "annotation" meta: classes: - "warning" attributes: code: 6 sourceMap: - element: "sourceMap" content: - - 81 - 10 content: "empty request message-body" OK. warning: (6) empty request message-body :81:10
drafter doc.apib --format json {"element"=>"parseResult", "content"=>[{"element"=>"category", "meta"=>{"classes"=>["api"], "title"=>"Микросервис"}, "content"=>[{"element"=>"category", "meta"=>{"classes"=>["resourceGroup"],
"title"=>""}, "content"=>[{"element"=>"resource", "meta"=>{"title"=>"Статус"}, "attributes"=>{"href"=>"/status"}, "content"=>[{"element"=>"transition", "meta"=>{"title"=>"Проверить"}, "content"=>[{"element"=>"copy", "content"=>"Узнать статус микросервиса\n"}, {"element"=>"httpTransaction", "content"=>[{"element"=>"httpRequest", "attributes"=>{"method"=>"GET"}, "content"=>[]}, {"element"=>"httpResponse", "attributes"=>{"statusCode"=>"200"}, "content"=>[]}]}]}]}]}]}, {"element"=>"annotation", "meta"=>{"classes"=>["warning"]}, "attributes"=>{"code"=>6, "sourceMap"=>[{"element"=>"sourceMap", "content"=>[[81, 10]]}]}, "content"=>"empty request message-body”}]} OK. warning: (6) empty request message-body :81:10
gem redsnow
Tools •Editors •Parsers • Renders •Testing •Mock servers •Others
любой Markdown preview
Aglio aglio -i doc.apib -s (default localtosh:3000)
Aglio aglio -i doc.apib -s --theme-template triple (default localtosh:3000)
Aglio aglio -i doc.apib -s --theme-variables slate (default localtosh:3000)
Iglo(go), Atom preview
Tools •Editors •Parsers •Renders • Testing •Mock servers •Others
Dredd если на самом деле есть приложение и документация на
него, и хочется проверить только один первый ответ в документации для каждого запроса который обязательно не возвращает тело dredd doc.apib http://localhost:3000
Dredd
Dredd
где пригодятся такие авто тесты?
Tools •Editors •Parsers •Renders •Testing • Mock servers •Others
Drakov если хочется сделать мок сервер для запросов которые не
отправляют тело запроса и возвращают код ответа без тела ответа drakov -f doc.apib curl -v -X GET http://localhost:3000/status
Drakov
Можно “натравить” dredd на drakov используя одну и туже документацию
и они оба отработают корректно (если документация валидна)
gem apib-mock_server
зачем нужны такие mock сервера?
Tools •Editors •Parsers •Renders •Testing •Mock servers • Others
Ни один инструмент не использует MSON(и даже просто JSON) (не
считая парсер и превью)
Middleware валидация
конец