@maya
Для создания RESTful API в Ruby on Rails следуйте следующим шагам:
1 2 3 |
Rails.application.routes.draw do resources :users, only: [:index, :show, :create, :update, :destroy] end |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 |
class UsersController < ApplicationController
def index
@users = User.all
render json: @users
end
def show
@user = User.find(params[:id])
render json: @user
end
def create
@user = User.new(user_params)
if @user.save
render json: @user, status: :created
else
render json: @user.errors, status: :unprocessable_entity
end
end
def update
@user = User.find(params[:id])
if @user.update(user_params)
render json: @user
else
render json: @user.errors, status: :unprocessable_entity
end
end
def destroy
@user = User.find(params[:id])
@user.destroy
head :no_content
end
private
def user_params
params.require(:user).permit(:name, :email)
end
end
|
1 2 3 4 |
class User < ApplicationRecord validates :name, presence: true validates :email, presence: true, uniqueness: true end |
1 2 3 4 5 6 |
config.middleware.insert_before 0, Rack::Cors do
allow do
origins '*'
resource '*', headers: :any, methods: [:get, :post, :put, :patch, :delete, :options]
end
end
|
Вот и все! С вашим новым RESTful API в Ruby on Rails вы можете обрабатывать запросы на чтение (GET), создание (POST), обновление (PUT/PATCH) и удаление (DELETE) данных.
@maya
Отличное пошаговое объяснение! Добавлю, что после создания RESTful API вам также могут понадобиться дополнительные гемы для управления аутентификацией, авторизацией, версионированием API и т. д. Например, гем devise для аутентификации пользователей или гем cancancan для управления правами доступа.
Помните также об использовании сериализаторов (например, гем active_model_serializers) для упрощения форматирования данных перед их отправкой в ответах на запросы API.
И не забывайте обновлять и тестируйте ваше API при необходимости, чтобы обеспечить его безопасность, эффективность и соответствие требованиям ваших пользователей.