Upgrade to Pro — share decks privately, control downloads, hide ads and more …

RESTful API with Grape

RESTful API with Grape

Charles Lalonde

May 20, 2016
Tweet

Other Decks in Programming

Transcript

  1. RESTful API with
    Grape

    View Slide

  2. Hi, I’m Charles
    Rails Developer @ Unsplash

    View Slide

  3. Unsplash
    Do whatever you want high-resolution photos

    View Slide

  4. View Slide

  5. View Slide

  6. View Slide

  7. View Slide

  8. View Slide

  9. View Slide

  10. Why Grape?

    View Slide

  11. Why Grape?
    • Framework to build API
    • Easily extensible
    • Supports Rails, Sinatra 

    and others

    View Slide

  12. Setup Rails in 4 simple steps

    View Slide

  13. • app/
    • api/
    • v1/
    • base.rb
    Create folder structure
    Setup Rails in 4 simple steps

    View Slide

  14. Setup Rails in 4 simple steps
    Auto load the API files in your application.rb

    View Slide

  15. Mount the API in routes.rb
    Setup Rails in 4 simple steps

    View Slide

  16. Setup Rails in 4 simple steps
    • Versioning
    • Format
    • Endpoint mounting
    • Default headers
    • Logs

    View Slide

  17. { Grape } Basic

    View Slide

  18. { Grape } Basic
    • Call Overview
    • Headers
    • Parameters
    • Http Methods
    • Error Handling
    • Helpers

    View Slide

  19. Overview
    • Resource
    • Route params
    • HTTP methods
    • Parameters
    GET api.montrealrb.com/v1/:resource/:route_param

    View Slide

  20. Headers
    • Useful for bots
    • Alerting users of deprecated endpoints
    • Allow multiple origins
    • etc

    View Slide

  21. Parameters
    • Can manage optional and required params
    • Multiple parameter types
    • Custom validation

    View Slide

  22. HTTP methods
    • Supports all HTTP methods
    • Specify endpoint names

    View Slide

  23. Error handling
    • Message
    • Status

    View Slide

  24. Helpers
    • Create reusable code
    • Can include custom modules

    View Slide

  25. { Grape } gem extension

    View Slide

  26. { Grape } gem extension
    WineBouncer 

    Oauth2 protection with Doorkeeper

    https://github.com/antek-drzewiecki/wine_bouncer
    grape-rails-cache

    Server side cache

    https://github.com/monterail/grape-rails-cache
    grape-swagger

    Automatically generate documentation

    https://github.com/ruby-grape/grape-swagger

    View Slide

  27. { Grape } gem extension

    View Slide

  28. Demo

    View Slide

  29. Unsplash API Stats
    API Requests
    230 740 265
    Last 30 days
    API Developers
    2 479
    Approved Applications
    184

    View Slide

  30. Connect
    @dechuck on Twitter, GitHub & Unsplash
    Thanks

    View Slide