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
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
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
Mobile backend without REST
Search
DAloG
April 26, 2017
Programming
160
2
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Mobile backend without REST
DAloG
April 26, 2017
More Decks by DAloG
See All by DAloG
State normalization (RU)
dalog
0
260
Redux + MQTT
dalog
1
840
От задач к проблемам
dalog
1
290
Unlimited power of Data-Driven UI
dalog
4
720
Data-Driven View Controllers. Tips and Tricks
dalog
5
2k
2 years of Redux in iOS. Lessons learned
dalog
0
430
Why unidirectional architecture matter for iOS.
dalog
1
340
Self managed teams 101
dalog
0
210
FMVP
dalog
1
210
Other Decks in Programming
See All in Programming
動作中のプログラムの中身をリアルタイムに覗く / Realtime Debugger for CSharp with Roslyn
prota
1
1.9k
PumaからFalconに移行したRailsアプリケーションでの実践
falcon8823
0
170
Long Living Tokens, Die, Die, Die! (or: The One Ring is Banned in Modern)
sylph01
0
310
Verilogで学ぶCPU自作入門
uyuki234
8
4.1k
【加筆修正版】Laravel のアプリケーションをどこにデプロイするか #phpcon_ehime
akase244
0
150
UPDATE をやめる — EF Core でマスタをバージョン管理する
panda728
PRO
0
1.2k
コードで差別化できない時代の ソフトウェアエンジニアリング / Software Engineering in an Era Where Code Doesn’t Differentiate
kishida
2
180
最近”作らせてる” ローカルAIアプリの話
akit37
0
470
AI主導のプログラミング学習アプリを作ってみた
econanringo
0
180
見えないものを探る要求要件定義に必要な基本的思考 / invisible-requirement-thinking
minodriven
15
8.5k
AIに “答え“を書かせるのを やめてみた
___akari11
0
120
dotNET_vulnclicker_intro.pdf
deka_morita
0
140
Featured
See All Featured
Principles of Awesome APIs and How to Build Them.
keavy
128
18k
Agile Actions for Facilitating Distributed Teams - ADO2019
mkilby
0
310
Design of three-dimensional binary manipulators for pick-and-place task avoiding obstacles (IECON2024)
konakalab
0
620
First, design no harm
axbom
PRO
2
1.3k
Deep Space Network (abreviated)
tonyrice
0
370
Building an army of robots
kneath
307
47k
HTML-Aware ERB: The Path to Reactive Rendering @ RubyCon 2026, Rimini, Italy
marcoroth
5
820
Avoiding the “Bad Training, Faster” Trap in the Age of AI
tmiket
0
270
[Rails World 2026] Durable orchestration on Rails: from continuation to workflow
palkan
1
750
ReactJS: Keep Simple. Everything can be a component!
pedronauck
666
130k
Visual Storytelling: How to be a Superhuman Communicator
reverentgeek
2
710
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
333
23k
Transcript
REST LESS APP MOBILE FIRST BACKEND
REST?
TEXT SHORT HISTORY OF REST ▸ 1996 - developing the
pattern ▸ 2000 - formalizing the pattern ▸ 2010 - spreading around the world. http://www.ics.uci.edu/~fielding/pubs/dissertation/rest_arch_style.htm
TEXT REST REQUIREMENTS ▸ Client - Server ▸ No client
state ▸ No client session on a client ▸ Caching (CDN and HTTP powered) ▸ Resource by URL / URI http://www.ics.uci.edu/~fielding/pubs/dissertation/rest_arch_style.htm
TEXT REST PROBLEMS ▸ Versioning ▸ Discoverability ▸ Dynamic API
▸ Assumption Driven Development
SERVER FIRST
MOBILE FIRST?
TEXT MOBILE NEEDS ▸ Multiple Environments ▸ Versioning (multiple versions
in store) ▸ Minimum logic on client side ▸ Sessions ▸ Feature toggles ▸ API Spec
TEXT MICROSERVICES ▸ Multiple Instances ▸ More like distributed objects
▸ Composition enabled ▸ Feature oriented
TEXT MICROSERVICES ▸ Multiple Instances ▸ More like distributed objects
▸ Composition enabled ▸ Feature oriented
TEXT CONFIG SERVICE REQUEST "context": { "version": "1.0", "locale": "en_US",
"bundle": "com.my.food-delivery", "device": "iPhone", "screen": { "width": 320, "height": 480 }, "uuid": "ABCD-1234-1242-1564", ... }
TEXT CONFIG SERVICE RESPONSE "config": { "menu": { "search": {
"url": "https://m.com/menu/v1/search", "context": { "session": "ABCD-1234-1242-1564", "currency": "USD" } }, "popular": [ ... ], ... }, ... }
TEXT CONFIG SERVICE RESPONSE "error": { "kind": "temporal", "message": "We
are updating our service, please wait up to 2 AM of tommorow." }
TEXT CONFIG SERVICE RESPONSE "error": { "kind": "permanent", "message": "Please
download new version from App Store", "action": "app store page" }
TEXT SEARCH SERVICE REQUEST "search": { "term": "sushi", "context": {
... } }
TEXT SEARCH SERVICE RESPONSE "items": [ { "title": "Roll", "price":
"18 USD", "markAsFavorite": { "url": "http://food.com/markAsFavorite", "context": { "id": 1990, "user": "ABCD-1234-1242-1564" } }, } ]
CODE IS DATA
TEXT NEXT STEPS ▸ Tell server about needed data ▸
GraphQL ▸ Remote code injection
TEXT CONFIG SERVICE REQUEST "context": { ... "menu": { "search":
{ "url": { "type": "$url" }, "json": { "type": "$object", "variables": ["$term"] } } } }
TEXT CONFIG SERVICE RESPONSE "config": { "menu": { "search": {
"url": "https://food-delivery.com/menu/v1/search", "json": { "term": "$term", "session": "ABCD-1234-1242-1564", "currency": "USD" } } } }
GRAPH QL http://graphql.org
REACT NATIVE https://facebook.github.io/react-native/
SERVER APP LOGIC UI
SERVER APP LOGIC UI
WHY IT IS IMPORTANT?
PROJECTS ARE DEAD
TEXT PRODUCT TRAITS ▸ Dynamic set of functionality ▸ Data
driven decisions ▸ Weekly updates
QUESTIONS?
[email protected]