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.
Bài đăng này đã không được cập nhật trong 7 năm
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.
All rights reserved