Rails에서 처음으로 RESTful API를 만들었습니다.
전제
REST(REpresentational State Transfer) 설계 원칙
· 자원은 고유하게 식별 가능
・상태를 가지지 않는다
· URL은 자원의 복수형으로 표현
· URL은 동사를 포함하지 않고 HTTP 메소드로 조작을 지정
REST에 근거해 HTTP 메소드로 자원을 CRUD 조작할 수 있는 설계를 RESTful이라고 말하기도 한다.
RESTful API! !
이번 데이터의 형식은 JSON입니다.
조금 전에는 XML이 주류였다고 합니다.
JSON은 무엇입니까?
Rails5를 사용합니다.
Rails5가 아니면 다음에 나오는 API 모드를 사용할 수 없기 때문에 주의입니다.
만들어 보자.
1. API 모드를 사용하여 새로 생성
$ rails new driver_api --api
디렉토리 이동
$ cd driver_api
2. 운전자의 Model, Controller 작성
$ rails g scaffold drivers
"render json:"이 많이 있는 drivers_controller.rb가 있습니다.
controllers/drivers_controller.rbclass DriversController < ApplicationController
before_action :set_driver, only: [:show, :update, :destroy]
# GET /drivers
def index
@drivers = Driver.all
render json: @drivers
end
# GET /drivers/1
def show
render json: @driver
end
# POST /drivers
def create
@driver = Driver.new(driver_params)
if @driver.save
render json: @driver, status: :created, location: @driver
else
render json: @driver.errors, status: :unprocessable_entity
end
end
# PATCH/PUT /drivers/1
def update
if @driver.update(driver_params)
render json: @driver
else
render json: @driver.errors, status: :unprocessable_entity
end
end
# DELETE /drivers/1
def destroy
@driver.destroy
end
private
# Use callbacks to share common setup or constraints between actions.
def set_driver
@driver = Driver.find(params[:id])
end
# Only allow a trusted parameter "white list" through.
def driver_params
params.fetch(:driver, {})
end
end
3. 열 추가
↓이런 느낌으로 합시다.
컬럼
데이터 유형
driver_name
문자열
운전자 이름
tel
문자열
전화번호
car_number
문자열
차량 번호
$ rails g migration add_column_to_drivers
위 명령을 사용하여 migration 파일을 만들고 다음 add_column을 추가합니다.
db/migrate/xxxxxxxxxx_add_column_to_drivers.rbclass AddColumnToDrivers < ActiveRecord::Migration[5.1]
def change
add_column :drivers, :name, :string
add_column :drivers, :tel, :string
add_column :drivers, :car_number, :string
end
end
4. 마이그레이션 실행
$ rails db:migrate
5. 운전자 데이터(driver.csv)를 db 디렉토리에 저장
데이터는 여기입니다.
6. db/seeds.rb 편집
db/seeds.rbrequire 'csv'
CSV.foreach('db/driver.csv') do |row|
Driver.create(:name => row[0],:tel => row[1],:car_number => row[2])
end
7. 마이그레이션 실행
$ rails db:seed
⬆️db:seed의 요주의군요.
실행해 보면
아래 명령으로 서버 시작을 실행하고,
$ rails s
http://localhost:3000/drivers 방문.
운전자 데이터가 JSON으로 반환되는 것을 확인할 수 있다.
다음에는 외부에서 데이터를 POST해 봅시다.
Reference
이 문제에 관하여(Rails에서 처음으로 RESTful API를 만들었습니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/akkiii/items/f7b9e6abd2248c5b3d0f
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
1. API 모드를 사용하여 새로 생성
$ rails new driver_api --api
디렉토리 이동
$ cd driver_api
2. 운전자의 Model, Controller 작성
$ rails g scaffold drivers
"render json:"이 많이 있는 drivers_controller.rb가 있습니다.
controllers/drivers_controller.rb
class DriversController < ApplicationController
before_action :set_driver, only: [:show, :update, :destroy]
# GET /drivers
def index
@drivers = Driver.all
render json: @drivers
end
# GET /drivers/1
def show
render json: @driver
end
# POST /drivers
def create
@driver = Driver.new(driver_params)
if @driver.save
render json: @driver, status: :created, location: @driver
else
render json: @driver.errors, status: :unprocessable_entity
end
end
# PATCH/PUT /drivers/1
def update
if @driver.update(driver_params)
render json: @driver
else
render json: @driver.errors, status: :unprocessable_entity
end
end
# DELETE /drivers/1
def destroy
@driver.destroy
end
private
# Use callbacks to share common setup or constraints between actions.
def set_driver
@driver = Driver.find(params[:id])
end
# Only allow a trusted parameter "white list" through.
def driver_params
params.fetch(:driver, {})
end
end
3. 열 추가
↓이런 느낌으로 합시다.
컬럼
데이터 유형
driver_name
문자열
운전자 이름
tel
문자열
전화번호
car_number
문자열
차량 번호
$ rails g migration add_column_to_drivers
위 명령을 사용하여 migration 파일을 만들고 다음 add_column을 추가합니다.
db/migrate/xxxxxxxxxx_add_column_to_drivers.rb
class AddColumnToDrivers < ActiveRecord::Migration[5.1]
def change
add_column :drivers, :name, :string
add_column :drivers, :tel, :string
add_column :drivers, :car_number, :string
end
end
4. 마이그레이션 실행
$ rails db:migrate
5. 운전자 데이터(driver.csv)를 db 디렉토리에 저장
데이터는 여기입니다.
6. db/seeds.rb 편집
db/seeds.rb
require 'csv'
CSV.foreach('db/driver.csv') do |row|
Driver.create(:name => row[0],:tel => row[1],:car_number => row[2])
end
7. 마이그레이션 실행
$ rails db:seed
⬆️db:seed의 요주의군요.
실행해 보면
아래 명령으로 서버 시작을 실행하고,
$ rails s
http://localhost:3000/drivers 방문.
운전자 데이터가 JSON으로 반환되는 것을 확인할 수 있다.
다음에는 외부에서 데이터를 POST해 봅시다.
Reference
이 문제에 관하여(Rails에서 처음으로 RESTful API를 만들었습니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/akkiii/items/f7b9e6abd2248c5b3d0f
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
$ rails s
Reference
이 문제에 관하여(Rails에서 처음으로 RESTful API를 만들었습니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/akkiii/items/f7b9e6abd2248c5b3d0f텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)