Rails API Real Quick 만들기
지도 시간
단계
1. 새 Rails 프로젝트 생성
Rails가 설치되어 있다고 가정하고
<my-project>
를 프로젝트 이름으로 대체하여 터미널에 다음 명령을 입력합니다.rails new <my-project> --api --database=postgresql
Flags: The
--api
flag will forgo some of the extra junk a full Rails app has that I do not need. The--database
flag lets you specify the type of database you prefer. I chose PostgreSQL. If you do not include this flag, the default database will be SQLite.
시연을 위해 Evil Dog Catcher API를 생성하겠습니다.
Google 이미지에서 찾은 이 개 포수 장난감을 확인하세요.
어떤 부적응 아이가 개 포수 장난감을 가지고 놀고 싶어합니까? 이런.
2. 계획 모델/관계
Rails가 설치되는 동안 지금이 모델과 관계를 계획하기에 좋은 시기입니다. 이에 대한 명확한 아이디어를 미리 가지고 있으면 많은 골칫거리를 줄일 수 있습니다.
나는 Catchers와 Dogs의 두 가지 모델과 함께 갈 것입니다.
관계는 다음과 같습니다.
3. 리소스 생성
다음으로 리소스를 생성하겠습니다. 이 명령은 각 모델 이름에 대한 마이그레이션, 모델, 컨트롤러 및 경로를 빠르게 설정합니다.
rails generate resource <model> <attribute>:<type> <attribute>:<type>
Tips: You can use
g
as shorthand forgenerate
. Also, you can list another model’s name as an attribute with a type ofreferences
to automatically add a foreign key to that model.
다음은 내 리소스 명령입니다.
rails g resource catcher name:string city:string
rails g resource dog name:string breed:string catcher:references
References는 Dog 모델에 대한 외래 키를 제공하지만 수동으로 Catcher 모델 add
has_many :dogs
로 이동해야 합니다.class Dog < ApplicationRecord
belongs_to :catcher # set up by catcher:references
end
class Catcher < ApplicationRecord
has_many :dogs # add this line
end
4. 데이터베이스 생성/마이그레이션
모든 파일이 생성되면 이제 데이터베이스를 가동할 차례입니다. 먼저 마이그레이션 파일을 다시 확인하여 모든 것이 제대로 보이는지 확인합니다.
class CreateCatchers < ActiveRecord::Migration[6.0]
def change
create_table :catchers do |t|
t.string :name
t.string :city
t.timestamps
end
end
end
class CreateDogs < ActiveRecord::Migration[6.0]
def change
create_table :dogs do |t|
t.string :name
t.string :breed
t.references :catcher, null: false, foreign_key: true
t.timestamps
end
end
end
Note: Notice the line under
CreateDogs
that starts witht.references...
. Becausenull: false
, I will not be able to create a Dog unless it has the foreign key of a Catcher. If you want to be able to create models without this, setnull: true
.
모든 것이 올바르게 보이므로 이제 다음 명령을 터미널에 입력하여 데이터베이스를 생성하고 마이그레이션하겠습니다.
rails db:create
rails db:migrate
다음 단계에서 진행 상황을 다시 확인합니다.
rails c
또는 rails console
가 콘솔을 엽니다. Catcher.create(name: 'test')
와 Dog 인스턴스Dog.create(name: ‘test’, catcher_id: 1)
를 만듭니다. 오류가 없어야 합니다. Catcher.find(1).dogs
를 입력하여 관계를 테스트합니다. 이것은 id가 1인 Catcher를 찾고 그들이 개가 있는지 나에게 보여줍니다. 나는 얻다:<ActiveRecord::Associations::CollectionProxy [#<Dog id: 1, name: “test”, breed: nil, catcher_id: 1, created_at: “2020–10–04 06:39:15”, updated_at: “2020–10–04 06:39:15”>]>
오류가 없으므로 다음 단계로 넘어갑니다.
5. 컨트롤러 설정
마지막 단계에서는 기본 인덱스 컨트롤러를 설정하고 Rails 서버에서 테스트합니다.
class CatchersController < ApplicationController
def index
# grab an array of all catchers in db
catchers = Catcher.all
# render a json object of all catchers
# include a sub array of their dogs with each catcher
render json: catchers, include: :dogs
end
end
터미널에서
rails s
또는 rails server
를 실행합니다. 브라우저에서 http://localhost:3000/catchers
를 열고 모든 것이 작동하는지 확인합니다.Tip: For production purposes, you can open the CORS of this API to any website. Install the CORS gem by opening the Gemfile, uncommenting
gem ‘rack-cors’
, and runbundle install
.
# Use Rack CORS for handling Cross-Origin Resource Sharing (CORS), making cross-origin AJAX possible
gem 'rack-cors'
Next, access the
config/application
file. Find the classApplication
and — without altering any of the default code — insert the following:
config.middleware.insert_before 0, Rack::Cors do
allow do
origins '*'
resource '*',
:headers => :any,
:methods => [:get, :post, :delete, :put, :patch, :options, :head],
:max_age => 0
end
end
Remember to change the
origins
before deployment or this API will be available to anyone.
결론
이 시점에서 기본 API가 작동합니다. 다음 단계는 다른 사이트가 가져올 CORS에 대해 CORS를 열고 백엔드에서 수행하기를 원하는 모든 작업을 수행하도록 컨트롤러를 설정하는 것입니다.
도움이 되었기를 바랍니다. 주로 API 설정을 위한 빠른 참조를 원했습니다. Rails에는 백만 개의 별칭과 바로 가기가 있다는 것을 알고 있습니다. 제안/수정 사항이 있는 경우. 의견을 주시거나
[email protected]
로 이메일을 보내주십시오.
Reference
이 문제에 관하여(Rails API Real Quick 만들기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/cooljasonmelton/whipping-up-a-rails-api-real-quick-mgg텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)