Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Unleashing Hyperdrive
Search
Kyle Fuller
April 17, 2015
Technology
4
250
Unleashing Hyperdrive
Unleashing Hyperdrive, a Swift API client utilising Hypermedia and API Blueprint
Kyle Fuller
April 17, 2015
Tweet
Share
More Decks by Kyle Fuller
See All by Kyle Fuller
Design APIs and deliver what you promised
kylef
0
140
Preparing for the future of API Description Languages
kylef
0
120
Resilient API Design
kylef
1
350
Building a Swift Web API and Application Together
kylef
2
2.1k
Testing without Xcode - CMD+U 2016
kylef
0
280
End-to-end: Building a Web Service in Swift (MCE 2016)
kylef
2
500
Designing APIs for Humans - Write the Docs 2016
kylef
0
350
Embracing Change - MBLTDev 2015
kylef
3
700
Practical Declarative Programming (360 iDev 2015)
kylef
3
530
Other Decks in Technology
See All in Technology
SLI/SLO 導入で 避けるべきこと3選
yagikota
0
110
内製AIチャットボットで学んだDatadog LLM Observability活用術
mkdev10
0
130
複数クラスタ運用と検索の高度化:ビズリーチにおけるElastic活用事例 / ElasticON Tokyo2026
visional_engineering_and_design
0
170
Zero Data Loss Autonomous Recovery Service サービス概要
oracle4engineer
PRO
2
13k
頼れる Agentic AI を支える Datadog のオブザーバビリティ / Powering Reliable Agentic AI with Datadog Observability
aoto
PRO
0
210
進化するBits AI SREと私と組織
nulabinc
PRO
1
250
詳解 強化学習 / In-depth Guide to Reinforcement Learning
prinlab
0
310
OSC仙台プレ勉強会 AlmaLinuxとは
koedoyoshida
0
190
OCI技術資料 : コンピュート・サービス 概要
ocise
4
54k
プラットフォームエンジニアリングはAI時代の開発者をどう救うのか
jacopen
7
3.9k
WebアクセシビリティをCI/CDで担保する ― axe DevTools × Playwright C#実践ガイド
tomokusaba
2
180
Go標準パッケージのI/O処理をながめる
matumoto
0
230
Featured
See All Featured
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
9
1.2k
Information Architects: The Missing Link in Design Systems
soysaucechin
0
830
The Curse of the Amulet
leimatthew05
1
10k
The SEO Collaboration Effect
kristinabergwall1
0
400
Java REST API Framework Comparison - PWX 2021
mraible
34
9.2k
Leadership Guide Workshop - DevTernity 2021
reverentgeek
1
240
Unlocking the hidden potential of vector embeddings in international SEO
frankvandijk
0
200
The browser strikes back
jonoalderson
0
810
Taking LLMs out of the black box: A practical guide to human-in-the-loop distillation
inesmontani
PRO
3
2.1k
Redefining SEO in the New Era of Traffic Generation
szymonslowik
1
250
The agentic SEO stack - context over prompts
schlessera
0
700
The Power of CSS Pseudo Elements
geoffreycrofte
82
6.2k
Transcript
Hyperdrive API Client in Swift
None
Traditionally
"Move fast and break things" Mark Zuckerberg, Facebook
"Each version will remain for at least 2 years from
release." Facebook
None
None
Move Fast, Break Nothing
Designing API by exposing implementation details
API Evolvability
Ability to change implementation details
Learn about controls, relations and transitions at run-time
Adding new features
Remove features
Ability to change implementation details 4 Change fields used in
forms 4 Change validation of attributes in forms 4 Change URIs of resources (/polls/{id} -> / questions/{slug}) 4 Change HTTP methods (PUT -> PATCH) 4 Change the content-type
Teach Clients Semantic meaning of the Domain
Don’t hard-code implementation details
Hyperdrive
hyperdrive(apiary: "pollsapi")
hyperdrive(blueprint: "https://polls.apiblueprint.org/")
hyperdrive(apiary: "pollsapi") { result in // Explore API feature availability
}
hyperdrive.enter("https://polls.apiblueprint.org/") { result in // Explore API feature availability }
Representor
if let questions = representor.links["questions"] { // The API offered
us a link to questions } else { // Gracefully handle when this feature is missing }
hyperdrive.request(questions) { result in }
representor.links
representor.transitions
if let create = representor.transitions["create"] { // API supports creation
} else { // Feature is missing // Let's not show the create button in our UI }
let attributes = [ "question": "Favourite language?", "choices": [ "Swift",
"Ruby", "Python", ] ] hyperdrive.request(create, attributes) { }
create.attributes
None
create.validate(["email": "kyle"]) ❌
create.validate(["email": "
[email protected]
"]) ✅
None
None
Change our API
Demo
Hyperdrive
Hyperdrive β
None
kyle fuller kyle @ apiary.io