Введение в создание API в 2023 году (Ruby on Rails)

Привет! Мне было трудно найти обновленный и понятный контент о том, как создать API. Поэтому я здесь, чтобы попытаться помочь вам справиться с этим немного мягче.

Передо мной стояла задача создать API с двумя конечными точками, первая конечная точка должна читать CSV-файл и регистрировать данные. Вторая конечная точка должна отображать информацию в формате JSON. Были и другие требования, но это все, что вам нужно знать для начала.

Итак, чтобы построить это, мне пришлось использовать Ruby on Rails, Postgresql был моим выбором БД. Моя ситуация заключалась в том, что я никогда не создавал API, поэтому мне потребовалось некоторое время, чтобы найти достоверную информацию о том, как создать API по шаблонам REST.

Вот мой вклад, чтобы помочь вам справиться с такой проблемой, надеюсь, вы понимаете, что делаете, и теряете меньше времени. В конце концов, отличные API — это сервис, который помогает всем нам!

1.0 Введение в API

1.1 Что такое API?

API расшифровывается как «Интерфейс прикладного программирования». Прежде всего, подчеркните, что это интерфейс! Это не сами данные или функция программного обеспечения, которая должна быть реализована сама по себе. API позволяет нам получить хорошие вещи и добавить инструменты, данные или функции в наше собственное приложение. Так что API — это средство для достижения цели!

Это позволяет программному обеспечению взаимодействовать друг с другом таким образом, что вам не придется изобретать велосипед каждый раз, когда вы хотите реализовать определенный тип функций или некоторые конкретные данные, которые вы хотите импортировать.

По сути, мы могли бы сказать, что API — это интерфейс, который передает запрос от программного обеспечения «А» к программному обеспечению «Б», будучи «А» клиентом, а «Б» кухней, API — это официант.

1.2 Почему мы должны использовать API?

Отлично, теперь мы получаем хорошие вопросы! Что ж, если мы создадим серверное программное обеспечение, мы могли бы использовать API для отправки этого кода для нескольких интерфейсных приложений. Итак, в нашем примере с кухней. Кухня сделала определенную ставку. Большой. Должны ли клиенты за столом тоже делать ставки? Нет!

Только кухня делает ставки («B»), а официант (API) доставляет ставки клиенту («A»).

В этой «рамке» есть и другие преимущества, такие как:

Доступ к специализированному функционалу:

› Ставки лучше делает кухня, чем клиент.

  • Упрощенная разработка:

Конечно, у клиента нет проблем с приготовлением пищи, покупкой продуктов и т. д.

  • Масштабируемость:

Благодаря API каждое приложение решает большую часть своих проблем. Так проще масштабировать эту функцию.

  • Гибкость:

Можно использовать разные API для подачи информации в ваше приложение ("A"). Таким образом, вы получаете гибкость выбора. В примере можно сказать, что клиент может заказать разные блюда на один и тот же ужин.

  • Безопасность:

Использование API может повысить вашу безопасность за счет использования различных методов проверки подлинности или авторизации. Это дополнительный уровень безопасности, который мы ясно видим, например, при использовании API для платежей.

1.3 Типы API

Существует несколько типов API, включая REST, SOAP, GraphQL и другие. REST (Representational State Transfer) — это широко используемая архитектура веб-API, которая использует HTTP-запросы для GET, PUT, POST и DELETE данных. SOAP (Simple Object Access Protocol) — это основанный на XML протокол обмена сообщениями для обмена информацией между компьютерами. GraphQL — это язык запросов, который позволяет разработчикам указывать нужные им данные из API.

2.0 Создание API

2.1 Для чего нужен API?

Прежде чем что-то строить, мы должны иметь четкое представление о том, что мы хотим получить в результате. Написание псевдокода — это всегда отличный способ начать создавать и решать любые проблемы с программированием.

В этом руководстве мы пытаемся создать интерфейс для доступа к данным из файла CSV.

Таким образом, наш псевдокод может выглядеть примерно так:

  1. Создайте новое приложение для рельсов.
  2. Загрузите файл CSV, содержащий данные.
  3. Прочитайте файл CSV и создайте данные на основе этого же файла, чтобы мы могли использовать его позже.
  4. Теперь нам нужно использовать созданные данные для отображения файла JSON, чтобы другие могли получить к нему доступ.

В нем не хватает многих деталей, но в этом суть псевдокода. Чтобы дать нам север!

2.2 Давайте запачкаем руки!

2.2.1 Создание приложения Rails

2.2.2 Скопируйте и вставьте файл CSV в ваше приложение Rails.

2.2.3 Установка маршрутов для того, что мы хотим!

Это сложная часть. В этом случае нам нужен сначала маршрут, который позволит нам отправить HTTP-запрос, который позволит действиям извлекать данные и читать CSV-файл, а также регистрировать данные в нашей собственной БД. Для этой цели мы будем использовать метод GET.

Версии. Хорошей практикой является установка наших маршрутов как api/v1/model_name/action.

Таким образом, вы можете легко определить, какая версия API используется. Для этого есть важные причины. Мы можем рассказать об этом позже.

Итак, чтобы создать этот маршрут для read_csv, мы сделаем это.

В маршрутах рельсов это даст нам: api_v1_read_csv GET /api/v1/read_csv

Кажется, у нас проблема с этим маршрутом. Вы можете догадаться?

Да, у нас нет модели, как мы и предсказывали ранее: api/v1/имя_модели/action.

Сделаем модель! И исправить маршрут!

Здесь подходит on-коллекция, потому что мы ищем не конкретный предмет, а коллекцию фильмов, поэтому наш маршрут не должен основываться на конкретных идентификаторах.

2.2.3 Генерирующий контроллер

Здесь мы создаем контроллер, который позже получит действие red_csv и индекс.

во-первых: создайте папку «api/v1» в нашей папке app/controllers. Затем :

2.2.4 Создание действия Read_csv.

  • Чтобы прочитать CSV-файл, нам нужно установить «CSV gem». Поместите его в свой Gemfile и выполните пакетную установку.
  • Теперь давайте создадим метод read_csv для Movies_Controller.

После запуска «rails s». Вы должны найти что-то подобное! Если вы его получили, это означает, что вы успешно прочитали файл CSV!! Так заканчивается первая конечная точка!! Ура!

Теперь, если мы поместим в наш URL-адрес HTTP-запрос, мы должны получить все фильмы в формате JSON?

Еще нет! Потому что у нас нет представления, и наше действие пусто. Мы могли бы пойти двумя путями. Создайте представление. Или мы могли бы просто визуализировать JSON непосредственно из контроллера, что мы и собираемся сделать. Без особой причины. Я верю, что вы можете выбрать то, что лучше для вас.

2.2.5 Индексное действие.

  • потому что мы создадим API с разбивкой на страницы. Мы установим еще один гем «kaminari». Так что поместите его в свой Gemfile и выполните установку пакета!
  • Итак, это 2 гема, которые мы установили. Не забывайте, к настоящему времени у вас должны быть гемы «csv» и «kaminari» в вашем Gemfile.

И вуаля. У нас есть совершенно функциональный API, предоставляющий JSON, сгенерированный из CSV-файла! Если мы развернёмся в продакшене, любой сможет создать семя из этих данных и получить к ним доступ.

Мы даже можем использовать строки запроса для фильтрации API для конкретных данных.

2.3 Подведение итогов

Есть так много всего, что нужно узнать об API, но я думаю, что это было отличное начало для меня в этом вопросе. И я надеюсь, что это помогло вам понять концепцию и, возможно, привело вас к вашему первому API!

Спасибо, что нашли время, чтобы прочитать это. И не стесняйтесь обращаться ко мне или оставлять комментарии здесь с сомнениями или предложениями, чтобы мы могли продолжать учиться!

P.S. Код можно посмотреть в моем репозитории на github. https://github.com/hurikzamith/my_medium_api