WOX.IN.UA - форум web розробників

Вітаємо на нашому форумі! Тут ви зможете обговорювати останні тенденції технологій, вирішувати завдання та обмінюватися досвідом з іншими розробниками.

WOX — це місце, де кожен може знайти щось корисне, навчитися новому та знайти відповіді на свої питання!

Стаття Створення та споживання API на Ruby on Rails

  • Автор теми LITVINOV
  • Дата створення
  • Автор теми
  • Адміністратор
  • Модератор
  • #1
Створення RESTful API на Rails

REST (Representational State Transfer) - це архітектурний стиль, який використовують для побудови масштабованих веб-сервісів. Rails чудово підтримує RESTful підхід, що робить створення API простим та ефективним.

Крок 1: Встановлення Rails

Спершу потрібно переконатися, що у вас встановлено Rails. Якщо ні, то виконайте команду:

Bash:
gem install rails

Крок 2: Створення нового Rails проекту

Створіть новий проект:

Bash:
rails new my_api
cd my_api

Крок 3: Створення моделі та міграції

Припустимо, ми хочемо створити API для управління книгами. Створимо модель Book:

Bash:
rails generate model Book title:string author:string description:text
rails db:migrate

Крок 4: Створення контролера

Тепер створимо контролер, який буде обробляти запити до нашого API:

Bash:
rails generate controller Api::V1::Books

Крок 5: Налаштування маршрутизації

Відкрийте файл config/routes.rb і додайте наступні маршрути:

Ruby:
namespace :api do
  namespace :v1 do
    resources :books
  end
end

Крок 6: Реалізація дій у контролері

Відкрийте файл app/controllers/api/v1/books_controller.rb і додайте наступний код:

Ruby:
module Api
  module V1
    class BooksController < ApplicationController
      before_action :set_book, only: [:show, :update, :destroy]

      def index
        @books = Book.all
        render json: @books
      end

      def show
        render json: @book
      end

      def create
        @book = Book.new(book_params)
        if @book.save
          render json: @book, status: :created
        else
          render json: @book.errors, status: :unprocessable_entity
        end
      end

      def update
        if @book.update(book_params)
          render json: @book
        else
          render json: @book.errors, status: :unprocessable_entity
        end
      end

      def destroy
        @book.destroy
        head :no_content
      end

      private

      def set_book
        @book = Book.find(params[:id])
      end

      def book_params
        params.require(:book).permit(:title, :author, :description)
      end
    end
  end
end

Використання бібліотеки Grape для створення API

Grape - це легка бібліотека для створення API на Ruby. Вона забезпечує чіткий синтаксис і багатий набір можливостей для побудови RESTful API.

Крок 1: Додавання Grape до проекту

Додайте Grape до вашого Gemfile:

Ruby:
gem 'grape'

Виконайте команду bundle install для встановлення бібліотеки.

Крок 2: Створення API за допомогою Grape

Створимо новий файл для нашого API:

Bash:
mkdir app/api
touch app/api/books_api.rb

Крок 3: Реалізація API за допомогою Grape

Відкрийте файл app/api/books_api.rb і додайте наступний код:

Ruby:
module BooksAPI
  class API < Grape::API
    format :json

    resource :books do
      desc 'Return list of books'
      get do
        Book.all
      end

      desc 'Return a book'
      params do
        requires :id, type: Integer, desc: 'Book ID'
      end
      route_param :id do
        get do
          Book.find(params[:id])
        end
      end

      desc 'Create a book'
      params do
        requires :title, type: String
        requires :author, type: String
        optional :description, type: String
      end
      post do
        Book.create({
          title: params[:title],
          author: params[:author],
          description: params[:description]
        })
      end

      desc 'Update a book'
      params do
        requires :id, type: Integer
        optional :title, type: String
        optional :author, type: String
        optional :description, type: String
      end
      put ':id' do
        book = Book.find(params[:id])
        book.update({
          title: params[:title],
          author: params[:author],
          description: params[:description]
        })
        book
      end

      desc 'Delete a book'
      params do
        requires :id, type: Integer
      end
      delete ':id' do
        Book.find(params[:id]).destroy
      end
    end
  end
end

Крок 4: Підключення Grape API до Rails

Відкрийте файл config/routes.rb і додайте наступний код:

Ruby:
mount BooksAPI::API => '/api'

Висновок

У цій статті ми розглянули, як створити RESTful API на Rails і як використовувати бібліотеку Grape для створення API. Обидва підходи мають свої переваги і можуть бути використані в залежності від потреб вашого проекту. Rails надає простий і інтегрований спосіб створення API, тоді як Grape забезпечує більшу гнучкість і легкість у використанні для побудови RESTful сервісів.
 
Зверху Знизу