기본 CRUD Rails API 설정하기
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_forgery
은 protect_from_forgery with: :null_session
을 쓰는 것과 같이 요청이 통과될 수 있지만 세션을 삭제할 수 있습니다.그건 안전하지 않으니까 현실 세계에서 그러지 마세요. 좋은 이유가 없으면 괜찮아요.현재, 당신은
rails s
을 실행하고 당신이 설정한 노선을 클릭할 수 있습니다.우체부 같은 것이 필요할 수도 있지만 대부분을 찾을 수 있다.그러나 걱정하지 마라, 우리는 곧 우리의 반응으로 그들을 공격할 것이다.js 전단.
Reference
이 문제에 관하여(기본 CRUD Rails API 설정하기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/dtroyano86/setting-up-a-basic-crud-rails-api-1mad텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)