Rails Insights

API 전용 Rails 애플리케이션 설정하기

Ruby on Rails는 웹 애플리케이션을 빠르게 개발할 수 있는 강력한 프레임워크입니다. Rails는 전통적으로 MVC(모델-뷰-컨트롤러) 아키텍처를 따르지만, API 전용 애플리케이션을 설정하는 것도 가능합니다. 이 글에서는 API 전용 Rails 애플리케이션을 설정하는 방법을 단계별로 안내하겠습니다.

1. Rails 설치하기

먼저, Ruby와 Rails가 설치되어 있어야 합니다. Ruby는 2.5 이상, Rails는 5.0 이상이 필요합니다. 아래의 명령어를 사용하여 Rails를 설치할 수 있습니다.

gem install rails

설치가 완료되면, Rails 버전을 확인하여 제대로 설치되었는지 확인합니다.

rails -v

2. 새로운 Rails API 애플리케이션 생성하기

이제 API 전용 애플리케이션을 생성할 차례입니다. Rails는 API 전용 애플리케이션을 쉽게 생성할 수 있는 옵션을 제공합니다. 아래의 명령어를 사용하여 새로운 애플리케이션을 생성합니다.

rails new my_api --api

위 명령어에서 `my_api`는 애플리케이션의 이름입니다. `--api` 플래그는 Rails가 API 전용 애플리케이션을 생성하도록 지시합니다.

3. 데이터베이스 설정하기

Rails 애플리케이션은 기본적으로 SQLite를 사용하지만, 다른 데이터베이스를 사용할 수도 있습니다. 데이터베이스 설정을 위해 `config/database.yml` 파일을 수정합니다. 예를 들어, PostgreSQL을 사용하고 싶다면 다음과 같이 설정할 수 있습니다.

default: &default
  adapter: postgresql
  encoding: unicode
  pool: 5
  username: your_username
  password: your_password

development:
  <<: *default
  database: my_api_development

test:
  <<: *default
  database: my_api_test

production:
  <<: *default
  database: my_api_production
  username: my_api
  password: <%= ENV['MY_API_DATABASE_PASSWORD'] %>

설정을 완료한 후, 데이터베이스를 생성합니다.

rails db:create

4. 모델 생성하기

이제 API에서 사용할 모델을 생성해보겠습니다. 예를 들어, `Post` 모델을 생성하려면 다음 명령어를 사용합니다.

rails generate model Post title:string content:text

모델이 생성되면, 마이그레이션을 실행하여 데이터베이스에 테이블을 추가합니다.

rails db:migrate

5. 컨트롤러 생성하기

모델이 준비되었으니, 이제 API 요청을 처리할 컨트롤러를 생성합니다. `PostsController`를 생성하려면 다음 명령어를 사용합니다.

rails generate controller Posts

컨트롤러가 생성되면, `app/controllers/posts_controller.rb` 파일을 열어 API 엔드포인트를 정의합니다.

class PostsController < ApplicationController
  def index
    @posts = Post.all
    render json: @posts
  end

  def show
    @post = Post.find(params[:id])
    render json: @post
  end

  def create
    @post = Post.new(post_params)
    if @post.save
      render json: @post, status: :created
    else
      render json: @post.errors, status: :unprocessable_entity
    end
  end

  def update
    @post = Post.find(params[:id])
    if @post.update(post_params)
      render json: @post
    else
      render json: @post.errors, status: :unprocessable_entity
    end
  end

  def destroy
    @post = Post.find(params[:id])
    @post.destroy
    head :no_content
  end

  private

  def post_params
    params.require(:post).permit(:title, :content)
  end
end

6. 라우팅 설정하기

이제 API 엔드포인트를 사용할 수 있도록 라우팅을 설정해야 합니다. `config/routes.rb` 파일을 열고 다음과 같이 수정합니다.

Rails.application.routes.draw do
  resources :posts
end

이제 `GET`, `POST`, `PUT`, `DELETE` 요청을 통해 `Post` 리소스에 접근할 수 있습니다.

7. 테스트하기

API가 제대로 작동하는지 확인하기 위해 Postman과 같은 API 클라이언트를 사용할 수 있습니다. 아래는 각 요청의 예시입니다.

  • 모든 포스트 가져오기: GET /posts
  • 특정 포스트 가져오기: GET /posts/:id
  • 포스트 생성하기: POST /posts
  • 포스트 업데이트하기: PUT /posts/:id
  • 포스트 삭제하기: DELETE /posts/:id

각 요청에 대한 응답은 JSON 형식으로 반환됩니다.

8. CORS 설정하기

API를 다른 도메인에서 호출할 수 있도록 하려면 CORS(Cross-Origin Resource Sharing) 설정이 필요합니다. `Gemfile`에 `rack-cors`를 추가합니다.

gem 'rack-cors', require: 'rack/cors'

그런 다음, `bundle install`을 실행하여 gem을 설치합니다.

bundle install

이제 `config/application.rb` 파일을 열고 CORS 설정을 추가합니다.

module MyApi
  class Application < Rails::Application
    # ...

    config.middleware.insert_before 0, Rack::Cors do
      allow do
        origins '*'
        resource '*',
          headers: :any,
          methods: [:get, :post, :put, :patch, :delete, :options, :head]
      end
    end
  end
end

9. 결론

이제 API 전용 Rails 애플리케이션을 성공적으로 설정했습니다. 이 애플리케이션은 기본적인 CRUD(Create, Read, Update, Delete) 기능을 제공하며, 다른 클라이언트 애플리케이션과 통신할 수 있습니다. Rails의 강력한 기능을 활용하여 더 복잡한 API를 구축할 수도 있습니다. API 개발에 대한 더 많은 정보는 공식 Rails 문서를 참조하세요.

이 글이 API 전용 Rails 애플리케이션을 설정하는 데 도움이 되었기를 바랍니다. 질문이나 추가적인 도움이 필요하다면 언제든지 댓글로 남겨주세요!

Published: August 22, 2024

© 2024 RailsInsights. All rights reserved.