Your SlideShare is downloading. ×
APIs for mobile
Upcoming SlideShare
Loading in...5

Thanks for flagging this SlideShare!

Oops! An error has occurred.

Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

APIs for mobile


Published on

Published in: Technology

  • Be the first to comment

No Downloads
Total Views
On Slideshare
From Embeds
Number of Embeds
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

No notes for slide


  • 1. APIs/Services for Mobile Apps (in Ruby) Andrei Navarro
  • 2. Background● Web development for Startups ○ Web Products (w/ APIs)● .NET, PHP, Ruby (Rails, Ramaze)● Currently: ○ Tech Guy at Scrambled Eggs ○ Faculty at Ateneo de Manila● PHRUG, Startup Weekend● Geekcamp
  • 3. History● 80 - 90s: Computers for "Business" use● 90s - Early 00s: "dotcom" era; ecommerce ○ Web TV● Mid 00s: "Web 2.0"
  • 4. History
  • 5. Recent Years● Late 00s - 10s: Mobile Era ○ Faster mobile internet speed ○ Easier access to devices ○ Exponential growth in users ○ "App" Era● People becoming App developers instead of going into Web
  • 6. Mobile Apps need Web● Web developers are still relevant ○ Need to provide data/interconnectedness to mobile apps ○ Moving from Application layer to Presentation/Session layer
  • 7. Similarities with RIA● Javascript/AJAX makes requests to your backend -- which is connected to your database
  • 8. AJAX architecture
  • 9. Quick Story (Amundsen vs Scott)● The Antarctic Race ○ information-halos-and-apis● Apps are the "South Pole"● Native Wisdom: Your APIs support and strengthen your mobile apps (whether built by yourself or by a developer community)
  • 10. Mobile App Data Architecture
  • 11. Building APIs● Just like any other web app ○ no view layer (HTML/CSS/JS) ○ apps "view" your API● Transfer is via HTTP/HTTPS● Plan your format ○ JSON, XML, SOAP etc. ○ REST/RPC? ○ Parsing capability on client end● Scalability● Sessions and Authentication ○ token-based ○ header-based ○ devise
  • 12. Design-by-Contract● Define your "interface" that will supply the mobile app with JSON/XML data ○ use mocks!● When building your API, conform to that interface● Allows parallelization of development
  • 13. Testing● Web apps are tested on a browser● APIs ultimate test is on the target clients● Development usually happens in parallel -- and you need to validate your API works before app is completed ○ rest-client gem ○ rest-client chrome/firefox extensions
  • 14. Building it with Rails● Rails already supports RESTful architecture● Rails already supports multiple formats● Can use RSpec/Test::Unit to validate API requests● Variety of existing gems already tested and well integrated with Rails
  • 15. Issues with Rails● Issues for APIs (not in general)● Adds a lot of dependencies that arent needed for your purpose ○ Wasted memory● Cherry pick middleware and modules from the stack ○ hassle.● Others ○ using-to_json-youre-doing-it-wrong/
  • 16. Some solutions● RABL (Ruby API builder language) ○● Rails-API ○ ○ a subset of rails specifically for building APIs
  • 17. Microframeworks● Much lighter than Rails ○ Sinatra/Padrino ○ Ramaze ○ Merb ○ Camping● Build only what you need ○ smaller footprint● Youll need to know Ruby well ○ thats actually a good thing
  • 18. Grape Framework●● From Intridea, creators of OmniAuth● "An opinionated microframework for creating REST-like APIs in Ruby"GeneralizedRapidAPIErector
  • 19. Grape Framework
  • 20. Grape Framework● Rack-based ○ easy deployment over passenger ○ run via ○ can sit alongside your Rails app ■ mount My::API in config/routes.rb● Different content-types supported● Fun HTTP stuff (headers, verbs, status codes etc)● Entities: grouping/presenting your data into "Models"● Killer feature: API versioning
  • 21. API VersioningTraditional Web Development
  • 22. API Versioning● Support several versions of Mobile apps ○ up to client/user to update● App store problem ○ Dev ○ Staging ■ App store staging ○ Production ■ App store production
  • 23. API Versioning
  • 24. Recommendations● MVC-ize your application ○ Its just good design.● Use Devise/Omniauth for authentication ○ token-based authentication● Use oj gem for JSON ○ ○ faster Json parser/encoder compared to native ruby JSON parsing● Use ox gem for XML
  • 25. Questions? @dreinavarro