Rails API
소개
Rails의 API 모드를 활용하여 API를 만드는 절차를 요약했습니다.
절차
1. API 모드로 Rails 앱 만들기
2. 모델 컨트롤러 작성
3. 네임스페이스를 의식한 라우팅 설정
4. 컨트롤러 설정
5. 브라우저에서 확인
API 모드로 Rails 앱 만들기
$ rails new api-task --api
일반 rails new 명령의 끝에 --api를 붙이면 API 모드로 앱을 만들 수 있습니다.
(API에 필요하지 않은 부분을 기본적으로 작성하지 않습니다.)
모델 컨트롤러 작성
일반 Rails 앱처럼 모델과 컨트롤러를 만듭니다.
rails g model category name:string
rails g model idea category_id:bigint body:text
$ rails db:create
$ rake db:migrate
네임스페이스를 인식하는 라우팅 설정
처음부터 다음과 같이 버전으로 네임스페이스를 만들어 두면 향후 API 버전 관리가 용이해집니다.
config/routes.rbRails.application.routes.draw do
namespace 'api' do
namespace 'v1' do
resources :posts
end
end
end
컨트롤러 설정
루트에서 설정한 네임스페이스에 따라 디렉터리 구성은 다음과 같습니다.
---- controllers
--- api
-- v1
- ideas_controller.rb
- categories_controller.rb
class IdeasController < ApplicationController
def index
@ideas = Idea.all
render json: @ideas
end
def create
@idea = Idea.new(idea_params)
if @idea.save
render json: @idea, status: :created, location: @idea
else
render json: @idea.errors, status: :unprocessable_entity
end
end
private
def idea_params
params.require(:idea).permit(:catagory_id,:body)
end
end
class CategoriesController < ApplicationController
def index
end
def create
@category = Category.new(idea_params)
if @category.save
render json: @category, status: :created, location: @category
else
render json: @category.errors, status: :unprocessable_entity
end
end
private
def category_params
params.require(:category).permit(:name)
end
end
브라우저에서 확인
일부 Idea를 만들고 브라우저에서 확인
Get( http://localhost:3000/api/v1/ideas )
위와 같이 표시되면 OK! !
Reference
이 문제에 관하여(Rails API), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/mat827/items/1a0e6fc93f793f9b7281
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
1. API 모드로 Rails 앱 만들기
2. 모델 컨트롤러 작성
3. 네임스페이스를 의식한 라우팅 설정
4. 컨트롤러 설정
5. 브라우저에서 확인
API 모드로 Rails 앱 만들기
$ rails new api-task --api
일반 rails new 명령의 끝에 --api를 붙이면 API 모드로 앱을 만들 수 있습니다.
(API에 필요하지 않은 부분을 기본적으로 작성하지 않습니다.)
모델 컨트롤러 작성
일반 Rails 앱처럼 모델과 컨트롤러를 만듭니다.
rails g model category name:string
rails g model idea category_id:bigint body:text
$ rails db:create
$ rake db:migrate
네임스페이스를 인식하는 라우팅 설정
처음부터 다음과 같이 버전으로 네임스페이스를 만들어 두면 향후 API 버전 관리가 용이해집니다.
config/routes.rbRails.application.routes.draw do
namespace 'api' do
namespace 'v1' do
resources :posts
end
end
end
컨트롤러 설정
루트에서 설정한 네임스페이스에 따라 디렉터리 구성은 다음과 같습니다.
---- controllers
--- api
-- v1
- ideas_controller.rb
- categories_controller.rb
class IdeasController < ApplicationController
def index
@ideas = Idea.all
render json: @ideas
end
def create
@idea = Idea.new(idea_params)
if @idea.save
render json: @idea, status: :created, location: @idea
else
render json: @idea.errors, status: :unprocessable_entity
end
end
private
def idea_params
params.require(:idea).permit(:catagory_id,:body)
end
end
class CategoriesController < ApplicationController
def index
end
def create
@category = Category.new(idea_params)
if @category.save
render json: @category, status: :created, location: @category
else
render json: @category.errors, status: :unprocessable_entity
end
end
private
def category_params
params.require(:category).permit(:name)
end
end
브라우저에서 확인
일부 Idea를 만들고 브라우저에서 확인
Get( http://localhost:3000/api/v1/ideas )
위와 같이 표시되면 OK! !
Reference
이 문제에 관하여(Rails API), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/mat827/items/1a0e6fc93f793f9b7281
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
$ rails new api-task --api
일반 Rails 앱처럼 모델과 컨트롤러를 만듭니다.
rails g model category name:string
rails g model idea category_id:bigint body:text
$ rails db:create
$ rake db:migrate
네임스페이스를 인식하는 라우팅 설정
처음부터 다음과 같이 버전으로 네임스페이스를 만들어 두면 향후 API 버전 관리가 용이해집니다.
config/routes.rbRails.application.routes.draw do
namespace 'api' do
namespace 'v1' do
resources :posts
end
end
end
컨트롤러 설정
루트에서 설정한 네임스페이스에 따라 디렉터리 구성은 다음과 같습니다.
---- controllers
--- api
-- v1
- ideas_controller.rb
- categories_controller.rb
class IdeasController < ApplicationController
def index
@ideas = Idea.all
render json: @ideas
end
def create
@idea = Idea.new(idea_params)
if @idea.save
render json: @idea, status: :created, location: @idea
else
render json: @idea.errors, status: :unprocessable_entity
end
end
private
def idea_params
params.require(:idea).permit(:catagory_id,:body)
end
end
class CategoriesController < ApplicationController
def index
end
def create
@category = Category.new(idea_params)
if @category.save
render json: @category, status: :created, location: @category
else
render json: @category.errors, status: :unprocessable_entity
end
end
private
def category_params
params.require(:category).permit(:name)
end
end
브라우저에서 확인
일부 Idea를 만들고 브라우저에서 확인
Get( http://localhost:3000/api/v1/ideas )
위와 같이 표시되면 OK! !
Reference
이 문제에 관하여(Rails API), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/mat827/items/1a0e6fc93f793f9b7281
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Rails.application.routes.draw do
namespace 'api' do
namespace 'v1' do
resources :posts
end
end
end
---- controllers
--- api
-- v1
- ideas_controller.rb
- categories_controller.rb
class IdeasController < ApplicationController
def index
@ideas = Idea.all
render json: @ideas
end
def create
@idea = Idea.new(idea_params)
if @idea.save
render json: @idea, status: :created, location: @idea
else
render json: @idea.errors, status: :unprocessable_entity
end
end
private
def idea_params
params.require(:idea).permit(:catagory_id,:body)
end
end
class CategoriesController < ApplicationController
def index
end
def create
@category = Category.new(idea_params)
if @category.save
render json: @category, status: :created, location: @category
else
render json: @category.errors, status: :unprocessable_entity
end
end
private
def category_params
params.require(:category).permit(:name)
end
end
Reference
이 문제에 관하여(Rails API), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/mat827/items/1a0e6fc93f793f9b7281텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)