기본 CRUD Rails API 설정하기

8559 단어 railsrubybeginners
따라서 rails new을 실행하고 새 Blank Rails 응용 프로그램이 기다리고 있습니다.우리는 그것을 CRUD API로 만들어 일련의 개와 상호작용을 할 것이다.
우선, 데이터베이스에 우리의 개 시계를 설정합니다.Rails는 활성 레코드(ORM)를 사용하여 데이터베이스를 추상적으로 호출합니다.패턴과 상호작용을 하기 위해서, 우리는 이동을 만들어야 한다.
특정 데이터베이스 명령에 대한 걱정 없이 Ruby 코드만 작성하면 데이터베이스와 상호 작용할 수 있으므로 마이그레이션이 매우 좋습니다.그러나 버전 제어와 데이터베이스가 모든 환경에서 같은 방식으로 설정되는지 확인하는 데도 유용하다.rails generate model Dog을 실행하여 rails g model Dog으로 줄일 수 있습니다.모델은 Pascal 대소문자로 명명되어야 하며 단수여야 합니다.이것은 dog 모델과 create dogs 마이그레이션을 생성하고 날짜 시간 코드를 추가합니다.Rails는 마이그레이션의 실행 순서를 파악하는 것이 매우 중요하기 때문에 항상 타임 스탬프를 미리 준비합니다.
당신의 새로운 이주 여행을 열어 우리 개에게 특징을 주자.
class CreateDogs < ActiveRecord::Migration[6.0]
  def change
    create_table :dogs do |t|
      t.string :name, not_null: false
      t.integer :age, not_null: false
      t.boolean :good, default: true
      t.timestamps
    end
  end
end
이 마이그레이션을 실행하면 change 메서드가 실행됩니다.이것은dogs표를 만들고 알려주는 열로 채웁니다.이 예에서, 우리는 이름이 필요합니다. 이것은 문자열입니다.null, 나이, 이것은 정수일 수도 없고,null, 그리고 개의 좋고 나쁨을 추적할 수도 없습니다. 이것은 브리 값입니다. 물론 기본값은true입니다.
Rails는 자동으로 created_at열과 updated_at열을 만들고 업데이트를 유지합니다.
현재 rails db:migrate이 실행 중입니다.create table 명령이 실행 중인 것을 보실 수 있습니다.만세!개를 추적하기 위한 시계를 만들었습니다.
발전기가 우리를 위해 만든 app/models/dog.rb을 켜자.그것은 비어 있으니 주의해라.괜찮습니다.여기에서, 우리는 모든 검증, 기타 데이터 세션과의 관련, 또는 이 모델과 관련된 계산 논리를 입력할 것이다.
비록 우리는 그것에 대해 어떠한 변경도 할 필요가 없지만, 그것을 이해하는 것은 매우 좋다.
이제 컨트롤러를 만들어 봅시다.rails g controller Dogs을 실행하면 컨트롤러도 Pascal이어야 하지만 복수여야 합니다.현재 당신은 app/views/dogs 폴더와 app/controllers/dogs_controller.rb 폴더를 가지고 있습니다.컨트롤러를 설정하기 전에, 우리는 예상한 조작을 처리하기 위해 먼저 노선을 설정합니다.
너의 config/routes.rb을 열어라, 안에 아무것도 없을 거야.우리는 개 한 마리를 만들고 모든 개를 보며 특정한 개 한 마리를 보고, 개 한 마리를 갱신하고, 개 한 마리를 삭제하기를 희망한다.그래서 한 줄을 추가해서 이렇게 하자.
Rails.application.routes.draw do
  resources :dogs, only: [:create, :index, :update, :destroy]
end
참고 자료에 따르면 Rails는 우리가 지정한 자원과 상호작용을 할 수 있기를 원하기 때문에 표준적인 RESTful 루트를 만들어야 한다고 한다.만약 당신이 그것을 거기에 두면, Rails는 새 개를 추가하거나 개를 업데이트하는 표를 처리하고, 한 개의 노선을 표시하는 데 두 개의 추가 노선을 설정할 것입니다. 그러나 우리의 앞부분이 이 점을 처리하기 때문에, 우리는 여기에 열거된 노선만 지정할 것입니다.
이제 rails routes을 실행하면 Rails에서 작성한 모든 라우트가 표시됩니다.메일박스에 문제가 많을 수도 있으니 걱정하지 마십시오. 이것은 우리가 중점적으로 주목할 문제입니다.
Prefix Verb    URI Pattern              Controller#Action
dogs  GET      /dogs(.:format)          dogs#index
      POST     /dogs(.:format)          dogs#create
dog   PATCH    /dogs/:id(.:format)      dogs#update
      PUT      /dogs/:id(.:format)      dogs#update
      DELETE   /dogs/:id(.:format)      dogs#destroy
이러한 접두사 동사를 HTTP 동사로 인식할 수 있어야 합니다.이것은 URI에 비칩니다. 이것은 클릭할 실제 경로입니다. 이 경로들 중 몇 개도 id를 얻을 수 있는지 주의하십시오. 그리고 Rails가 이 경로 중 하나를 눌렀을 때 논리를 표시하는 방법입니다.app/controllers/dogs_controller.rb을 열고 방법을 추가하겠습니다.
우리의 색인 방법부터 시작합시다. 그것은 우리의 모든 개를 보여 줄 것입니다.
class DogsController < ApplicationController
  def index
    render json: Dog.all
  end
end
index 방법은 모든 개를 찾을 것입니다. json으로 되돌아오기를 지정해 주십시오.여기서 가리키는 Dog은 ApplicationRecord에서 계승된 모델이기 때문에 우리는 활동 기록과 데이터베이스의 상호작용을 사용할 수 있다.
현재 우리의 데이터베이스에 개가 없기 때문에 우리는 방법을 만들어서 우리가 추가할 수 있도록 허락합니다!
def create
  dog = Dog.create(dog_params)
  render json: dog
end

private 

def dog_params
  params.require(:dog).permit(:name, :age)
end
create 방법에서, 우리는 주어진 매개 변수를 사용하여 새로운 Dog을 만들었습니다.두 번째private 방법을 사용해서 이 점을 실현할 수 있음을 주의하십시오.Rails는 강력한 매개 변수를 사용하여 악성 사용자의 공격으로부터 사용자를 보호합니다.이것은 사용자가 의외의 내용을 데이터베이스에 전달하는 것을 방지할 수 있다.하지만 이것은 또한 당신이 원하는 것을 Rails에게 말해야 한다는 것을 의미한다.우리는 dog params의 방법으로 한다.
이제 업데이트 방법을 추가합시다.
def update
  dog = Dog.find(params[:id])
  dog.update_attributes(dog_params)
  render json: dog
end
여기에서, 우리는 id에 따라 현재 개를 찾고, 전송된 파라미터를 사용하여 속성을 업데이트합니다.비록 네가 루비에 대해 그리 익숙하지 않더라도, 나는 그것의 일부분이 루비의 가독성이라는 것을 좋아한다.
마지막으로 CRUD 응용 프로그램을 작성하기 위해 제거 방법을 추가합니다.
def destroy
  Dog.destroy(params[:id])
end
다시 한 번, 나는 이것이 매우 명백하다고 생각한다.우리는 주어진 신분에 따라 개 한 마리를 파괴했다.
현재, rails s을 실행하고 API를 보기 전에, 우리는 app/controllers/application_controller.rb에 코드를 한 줄 추가해야 합니다. 이것은 우리의dogs 컨트롤러가 계승한 것입니다.보시다시피 Rails는 데이터 변경 요청에 대한 신뢰성 토큰을 제공하기 위해 우리를 다시 한 번 보호해 줍니다.그러나 우리가 단지 재미를 위해 세운 이상 우리는 걱정할 필요가 없다.
그래서 응용 프로그램 컨트롤러를 열고 코드를 한 줄 추가하면 이렇게 보입니다.
class ApplicationController < ActionController::Base
  protect_from_forgery
end
protect_from_forgeryprotect_from_forgery with: :null_session을 쓰는 것과 같이 요청이 통과될 수 있지만 세션을 삭제할 수 있습니다.그건 안전하지 않으니까 현실 세계에서 그러지 마세요. 좋은 이유가 없으면 괜찮아요.
현재, 당신은 rails s을 실행하고 당신이 설정한 노선을 클릭할 수 있습니다.우체부 같은 것이 필요할 수도 있지만 대부분을 찾을 수 있다.그러나 걱정하지 마라, 우리는 곧 우리의 반응으로 그들을 공격할 것이다.js 전단.

좋은 웹페이지 즐겨찾기