Hướng dẫn khởi tạo và config 1 số setting cơ bản khi create 1 Rails API App với Rails 5.
Khởi tại Rails App rails new app-test --api Edit Gemfile, thêm một số gem cần thiết để deploy heroku và debug. source 'https://rubygems.org' gem 'rails', '~> 5.0.0', '>= 5.0.0.1' gem 'puma', '~> 3.0' gem 'rack-cors' gem 'active_model_serializers', '~> ...
Khởi tại Rails App
rails new app-test --api
Edit Gemfile, thêm một số gem cần thiết để deploy heroku và debug.
source 'https://rubygems.org' gem 'rails', '~> 5.0.0', '>= 5.0.0.1' gem 'puma', '~> 3.0' gem 'rack-cors' gem 'active_model_serializers', '~> 0.10.0' group :development, :test do gem 'mysql2', '>= 0.3.13', '< 0.5' gem 'byebug', platform: :mri end group :development do gem 'listen', '~> 3.0.5' gem 'spring' gem 'spring-watcher-listen', '~> 2.0.0' gem 'binding_of_caller' gem 'better_errors' end group :production do gem 'pg' gem 'rails_12factor' end gem 'tzinfo-data', platforms: [:mingw, :mswin, :x64_mingw, :jruby]
Config database.yml.
default: &default adapter: mysql2 encoding: utf8 pool: 5 host: localhost database: app_new_development username: root password: ' development: <<: *default test: <<: *default database: app_new_test
Không cần database cho production vì khi deploy lên heroku, heroku sẽ tự động thay file database.yml.
Config CORS
Create file config/initializers/cors.rb
Rails.application.config.middleware.insert_before 0, Rack::Cors do allow do origins '*' resource '*', headers: :any, methods: [:get, :post, :put, :patch, :delete, :options, :head] end end
Serializing API Serializing API là 1 gem rất hay được sử dụng trong các app API.
Để setting cho serializer, ta tạo file config/initializers/active_model_serializer.rb
ActiveModelSerializers.config.adapter = :json_api api_mime_types = %W( application/vnd.api+json text/x-json application/json ) Mime::Type.register 'application/vnd.api+json', :json, api_mime_types
Trong phần config adapter, có những adapter sau được hỗ trợ : - attributes - base - json_api - json - null
Ta có thể sử dụng command sau để tạo ra 1 serializer
rails g serializer user
Command này sẽ tạo ra file app/serializers/user_serializer.rb:
class UserSerializer < ActiveModel::Serializer attributes :id end
Versions cho API Khi phát triển app API để quản lý tốt các giai đoạn phát triển chúng ta sẽ sử dụng version. Khi có version thì endpoint của API sẽ như sau :
http://localhost:3000/api/v1/users/
Cấu trúc thư mục code sẽ như sau :
app/controllers/ . |-- api | `-- v1 | |-- api_controller.rb | `-- users_controller.rb |-- application_controller.rb
controllers sẽ giống như sau :
# app/controllers/api/v1/api_controller.rb module Api::V1 class ApiController < ApplicationController # do something here end end
# app/controllers/api/v1/users_controller.rb module Api::V1 class UsersController < ApiController # GET /v1/users def index render json: User.all end end end
Config routes config cho /api/v1/users:
namespace :api do namespace :v1 do resources :users end end
Đến đây về cơ bản chúng ta đã hoàn thành config cho 1 new app API với Rails 5, giờ thì bắt tay vào xây dựng app của mình thôi. Hy vọng bài viết này có ích với các bạn.