$30 off During Our Annual Pro Sale. View Details »

Rails API

Sayanee
April 30, 2014

Rails API

Basics of creating an API=only server with Rails with AngularJS in the frontend. Code: https://github.com/sayanee/Talks/tree/master/013-rails-api

Sayanee

April 30, 2014
Tweet

More Decks by Sayanee

Other Decks in Technology

Transcript

  1. Rails API
    ruby meetup 29 apr 2014

    View Slide

  2. api only
    version
    json
    cors
    auth
    mock server
    testing

    View Slide

  3. backend frontend
    logic view
    rails angular
    puma nginx
    localhost:3000 localhost:8888
    domainapi.com domain.com

    View Slide

  4. api only

    View Slide

  5. api only
    simpler Gemfile
    remove /app/views folder

    View Slide

  6. api only
    /app/controllers/application_controller.rb

    View Slide

  7. api only
    /app/controllers/pages_controller.rb
    /config/routes.rb

    View Slide

  8. api only demo
    git checkout step1

    View Slide

  9. version

    View Slide

  10. version
    /app/controllers/api/v1/api_controller.rb
    /app/controllers/api/v1/meetups_controller.rb

    View Slide

  11. version
    /config/routes.rb
    $ rails g model Meetup name:string event:datetime
    $ rake db:migrate
    $ rails c
    > Meetup.create(name: 'April meetup', event: Time.now)

    View Slide

  12. version demo
    git checkout step2

    View Slide

  13. json
    gem ‘active_model_serializers'
    rails g serializer meetup

    View Slide

  14. json
    /app/serializers/meetup_serializer.rb

    View Slide

  15. json
    /app/controllers/api/v1/meetups_controller.rb

    View Slide

  16. json demo
    git checkout step3

    View Slide

  17. cors

    View Slide

  18. cors frontend
    markup to display data

    View Slide

  19. cors frontend
    script to query api

    View Slide

  20. cors
    gem ‘rack-cors'

    View Slide

  21. cors
    /config/application.rb

    View Slide

  22. auth

    View Slide

  23. auth
    /db/migrate/xxx_add_auth_token_to_users.rb
    /app/models/user.rb

    View Slide

  24. auth
    /app/controllers/registrations_controller.rb
    backend - token sent as part of headers

    View Slide

  25. auth
    javascript
    frontend - token received and stored

    View Slide

  26. auth demo
    token stored in local storage

    View Slide

  27. auth
    /app/controllers/api/v1/meetups_controller.rb
    check token before every api request

    View Slide

  28. auth
    /app/controllers/api/v1/api_controller.rb

    View Slide

  29. auth demo
    git checkout step5

    View Slide

  30. mock server

    View Slide

  31. mock server
    /mock_server/server.rb
    with sinatra - start a mock server

    View Slide

  32. mock server
    /config/secrets.yml
    /app/controllers/api/v1/questions_controller.rb
    using mock server in test & dev environments

    View Slide

  33. mock server demo
    git checkout step6

    View Slide

  34. testing

    View Slide

  35. testing
    /spec/controllers/meetups_controller_spec.rb
    test for json response

    View Slide

  36. testing demo
    git checkout step7

    View Slide

  37. other resources
    demo code: github.com/
    sayanee/talks/013-rails-api

    View Slide