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
Rails APIruby meetup 29 apr 2014
View Slide
api onlyversionjsoncorsauthmock servertesting
backend frontendlogic viewrails angularpuma nginxlocalhost:3000 localhost:8888domainapi.com domain.com
api only
api onlysimpler Gemfileremove /app/views folder
api only/app/controllers/application_controller.rb
api only/app/controllers/pages_controller.rb/config/routes.rb
api only demogit checkout step1
version
version/app/controllers/api/v1/api_controller.rb/app/controllers/api/v1/meetups_controller.rb
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)
version demogit checkout step2
jsongem ‘active_model_serializers'rails g serializer meetup
json/app/serializers/meetup_serializer.rb
json/app/controllers/api/v1/meetups_controller.rb
json demogit checkout step3
cors
cors frontendmarkup to display data
cors frontendscript to query api
corsgem ‘rack-cors'
cors/config/application.rb
auth
auth/db/migrate/xxx_add_auth_token_to_users.rb/app/models/user.rb
auth/app/controllers/registrations_controller.rbbackend - token sent as part of headers
authjavascriptfrontend - token received and stored
auth demotoken stored in local storage
auth/app/controllers/api/v1/meetups_controller.rbcheck token before every api request
auth/app/controllers/api/v1/api_controller.rb
auth demogit checkout step5
mock server
mock server/mock_server/server.rbwith sinatra - start a mock server
mock server/config/secrets.yml/app/controllers/api/v1/questions_controller.rbusing mock server in test & dev environments
mock server demogit checkout step6
testing
testing/spec/controllers/meetups_controller_spec.rbtest for json response
testing demogit checkout step7
other resourcesdemo code: github.com/sayanee/talks/013-rails-api