Rails5의 API 모드를 터치해 보십시오.

6875 단어 Rails
JSON에게 답장하는 API를 Rails로 만들고 싶어요!
하지만 MVC의 V는 필요 없다.
이럴 때는 API 모드!
Rails 기반 API 전용 애플리케이션

-api를 사용하여 Rails 생성

$ rails new my-service --api
$ cd my-service
$ bundle install
$ rails s
액세스http://localhost:3000/

이 화면을 보니까 마음이 놓이네요.

JSON으로 돌아가는 API 만들기


그럼 제가 user라는 자원을 만들어 볼게요.
scaffold 사용
scaffold는 자동으로 controller와 모델을 생성하는 기능입니다
열이 없으면 그거예요. 그래서 남e:string 정도 먼저 해야 돼요.
$ rails g scaffold user name:string
$ rails db:migrate
$ rails s
서버를 시작한 후 터미널 등록 사용자를 다시 엽니다
name 마이클 잭슨에 대한 찬사Lion Stout
$ curl --request POST --url http://localhost:3000/users/ --data 'user%5Bname%5D=Lion%20Stout'
다음에 다음 URL을 방문해 보세요
(users는 복수 형식이므로 주의)
잘 Lion Stout씨 등록!

(Chrome 확장JSON formatter

controller


이렇게 자동 생성
REST에 맞춰서 CRUD를 만드는 방법인 것 같아요.render json: @users에서 JSON의 응답을 반환합니다.
class UsersController < ApplicationController
  before_action :set_user, only: [:show, :update, :destroy]

  # GET /users
  def index
    @users = User.all

    render json: @users
  end

  # GET /users/1
  def show
    render json: @user
  end

  # POST /users
  def create
    @user = User.new(user_params)

    if @user.save
      render json: @user, status: :created, location: @user
    else
      render json: @user.errors, status: :unprocessable_entity
    end
  end

  # PATCH/PUT /users/1
  def update
    if @user.update(user_params)
      render json: @user
    else
      render json: @user.errors, status: :unprocessable_entity
    end
  end

  # DELETE /users/1
  def destroy
    @user.destroy
  end

  private
    # Use callbacks to share common setup or constraints between actions.
    def set_user
      @user = User.find(params[:id])
    end

    # Only allow a trusted parameter "white list" through.
    def user_params
      params.require(:user).permit(:name)
    end
end

테스트


이것은 scaffold의 기능으로 시험도 자동으로 생성할 수 있다
$ rails t
Running via Spring preloader in process 20343
Run options: --seed 58286

# Running:

.....

Finished in 0.832185s, 6.0083 runs/s, 8.4116 assertions/s.
5 runs, 7 assertions, 0 failures, 0 errors, 0 skips

참고 자료

  • Rubby on Rails5의 API 모드와 비 API 모드의 파일 차이
  • Rails 15분을 사용한 토큰 인증 API도 가능하시면 보세요.

    좋은 웹페이지 즐겨찾기