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
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
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
270
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
690
Practical Declarative Programming (360 iDev 2015)
kylef
3
530
Other Decks in Technology
See All in Technology
オンプレとGoogle Cloudを安全に繋ぐための、セキュア通信の勘所
waiwai2111
3
1k
primeNumber DATA MANAGEMENT CAMP #2:
masatoshi0205
1
630
男(監査)はつらいよ - Policy as CodeからAIエージェントへ
ken5scal
4
630
作るべきものと向き合う - ecspresso 8年間の開発史から学ぶ技術選定 / 技術選定con findy 2026
fujiwara3
6
1.6k
20260222ねこIoTLT ねこIoTLTをふりかえる
poropinai1966
0
300
俺の失敗を乗り越えろ!メーカーの開発現場での失敗談と乗り越え方 ~ゆるゆるチームリーダー編~
spiddle
0
400
Eight Engineering Unit 紹介資料
sansan33
PRO
1
6.8k
Databricksアシスタントが自分で考えて動く時代に! エージェントモード体験もくもく会
taka_aki
0
190
【SLO】"多様な期待値" と向き合ってみた
z63d
2
240
2026-02-25 Tokyo dbt meetup プロダクトと融合したCI/CD で実現する、堅牢なデータパイプラインの作り方
y_ken
0
150
AIで 浮いた時間で 何をする? 2026春 #devsumi
konifar
16
3.4k
NW構成図の自動描画は何が難しいのか?/netdevnight3
corestate55
2
490
Featured
See All Featured
Public Speaking Without Barfing On Your Shoes - THAT 2023
reverentgeek
1
330
YesSQL, Process and Tooling at Scale
rocio
174
15k
How Software Deployment tools have changed in the past 20 years
geshan
0
32k
Darren the Foodie - Storyboard
khoart
PRO
3
2.6k
Documentation Writing (for coders)
carmenintech
77
5.3k
Designing for humans not robots
tammielis
254
26k
Accessibility Awareness
sabderemane
0
71
Unlocking the hidden potential of vector embeddings in international SEO
frankvandijk
0
190
The #1 spot is gone: here's how to win anyway
tamaranovitovic
2
970
Stewardship and Sustainability of Urban and Community Forests
pwiseman
0
130
SEO for Brand Visibility & Recognition
aleyda
0
4.3k
How GitHub (no longer) Works
holman
316
140k
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