Rails에서 처음으로 RESTful API를 만들었습니다.

8152 단어 JSONRailsREST-APIapi

전제



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.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해 봅시다.

좋은 웹페이지 즐겨찾기