Начнем с настройки бэкенда. Я предполагаю, что у вас есть базовые знания о концепциях кодирования, вы знаете, как использовать интерфейс командной строки, у вас установлен Ruby на вашем компьютере, и вы хорошо с ним знакомы. Поехали!

Давайте начнем новый проект Rails. Нам понадобятся только функции API, а для базы данных — Postgres.

$ mkdir vue_rails_express_apps
$ cd vue_rails_express_apps
$ rbenv local 3.0.1
$ rails new app_name_of_your_choice — api — database=postgresql
$ cd app_name_of_your_choice

Затем добавьте gem ‘bcrypt’ в Gemfile — эта библиотека понадобится нам в нашем проекте — затем запустите $ bundle install.

Настройка завершена, давайте сделаем нашу первую миграцию. Начнем с создания базы данных и включения pgrypto. Модуль pgcrypto — это криптографическое расширение, предоставляющее ряд хэширующих и криптографических функций.

$ rails db:create
$ rails g migration EnablePgCrypto

Файлы миграции находятся в папке db/migrate. Откройте сгенерированный файл миграции и внутри метода change введите enable_extension(‘pgcrypto’).

Для запуска миграции используйте команду $ rails db:migrate. Хороший!

Делаем первую модель. Нашему сервису нужны пользователи!

$ rails g model User

Пара файлов была создана с помощью этой команды. Наиболее важными являются миграция и файл модели. Внутри файла user.rb мы можем определить некоторые свойства нашей модели. Мы не хотим хранить пароли в открытом виде, поэтому определим безопасный пароль. Модель также является местом, где мы можем проверять атрибуты, отражающие столбцы в таблице пользователей.

Внутри файла миграции таблицы пользователей нам нужно указать столбцы и их типы. Использование UUID (универсальный уникальный идентификатор) вместо ID является хорошей практикой, так как это гарантирует, что идентификатор не будет существовать в другой строке в наша система.

Запустите rails db:migrate, затем откройте консоль rails rails c и создайте нашего первого пользователя [1] pry(main)> User.create!(email: [email protected], password: qwerty, username: dummy_99).

Прохладный! Теперь мы можем начать работать над контроллером.

Прежде чем мы приступим к реализации методов CRUD, давайте взглянем на ApplicationController. ApplicationController — это особый класс, поскольку все остальные классы контроллеров наследуются от него. Лучше всего поставить специальный метод, который избавит нас от ActiveRecord::RecordNotFound ошибок.

#app/controllers/application_controller.rb
class ApplicationController < ActionController::API
  rescue_from ActiveRecord::RecordNotFound, with: :record_not_found
  def record_not_found
    render json: “Nothing’s here”, status: :not_found
  end
end

Теперь мы готовы создать контроллер для пользователей: $ rails g controller Users. Результатом этой команды является файл UsersController, расположенный в папке app/controllers/users_controller.rb. Стоит различать два частных метода — один для установки пользователя, которого мы собираемся изменить, и один для установки сильных параметров (что позволяет нам указать, какие параметры следует разрешить для дальнейшей обработки).

Последним шагом будет настройка наших маршрутов. В файле config/routes.rb нам нужно указать пути для роутера, чтобы корректно направлять входящие запросы на соответствующий контроллер. Поскольку у нас есть модель пользователя, это так же просто, как просто добавить resources :users в файл маршрутов.

Законченный! Теперь мы можем запустить наш внутренний сервер локально на порту по нашему выбору:

$ rails s -p 3005

На очереди: API-шлюз с Express.js

Привет, меня зовут Крис, я инженер-программист. Это самый первый урок, который я сделал, и я знаю, что, возможно, я еще не очень хорош в обучении. Я попытался сделать этот урок, чтобы показать тему шаг за шагом, но я мог пропустить некоторые тривиальные вещи. Если вы с чем-то застряли, сообщите мне об этом в комментариях.
Если этот урок решил вашу проблему и/или спас вам жизнь, вы можете угостить меня чашечкой кофе — просто нажмите огромную кнопку ниже. Здоровья!