Прежде чем мы углубимся в создание RESTful API с помощью Express.js, давайте немного узнаем о том, что мы собираемся создать, а именно API и RESTful API.

Что такое API?

API есть везде. Посещая этот пост, вы взаимодействовали с API. Тогда что такое API? Это сокращение от Application Programming Interface. Последнее слово, «Интерфейс», — это то, с чем вы будете взаимодействовать, получать доступ или что-то делать. Например, если вы хотите управлять телевизором, вы можете сделать это с помощью пульта дистанционного управления. Если вы хотите выключить, увеличить громкость и т. д., вы можете сделать это с помощью пульта дистанционного управления. Этот пульт дистанционного управления является API для телевизора. Вам не нужно открывать телевизор и самостоятельно переключать сигнал, чтобы переключить канал, пульт дистанционного управления поможет вам в этом.

REST-API

Существует несколько типов реализации API. Отныне в этой серии мы будем использовать REST. Это сокращение от передачи репрезентативного состояния. Это архитектура (впервые представленная Роем Филдингом), в которой мы используем HTTP (протокол) для передачи данных между клиентом и сервером. RESTful API — это служба API, которая следует принципам REST, таким как безгражданство, использование HTTP и т. д.

Ресурс, запрос и ответ

Клиент запрашивает часть данных под названием resource. Это все, что просит клиент; текст, число, изображение или даже ссылку на другой ресурс. Когда клиент связывается с сервером для запроса ресурса, это называется Request. И когда сервер отвечает на запрос, он снова вызывается Response. И запрос, и ответ имеют свою анатомию, давайте посмотрим.

Анатомия запроса

Каждый запрос от клиента состоит из четырех вещей:

1. Конечная точка

Конечная точка (или маршрут) — это URL-адрес, для которого был запрошен клиент. 4 вещи внутри конечной точки.

root-endpoint/path/:pathParam?queryParamKey=queryParamValue
  • Root-Endpoint: корень API. Например, https://api.github.com для GitHub API.
  • Путь. Конкретный путь, запрошенный клиентом. Например, если вы запрашиваете список продуктов, это может быть /products
  • Параметр пути (параметр URI): переменная внутри URI, которую можно использовать для обработки запроса. Он начинается с двоеточия и представляет, что запрашивает переменная. Пример параметра пути «:userId» представляет идентификатор пользователя, и клиент должен изменить его с помощью реального идентификатора пользователя.
  • Параметр запроса. Технически это не часть архитектуры REST, но мы будем часто его использовать. Параметр запроса позволяет вам «модифицировать» запрос с помощью пар ключ-значение. Он начинается со знака вопроса, а каждая пара разделяется амперсандом «&». Например, «?search=Richard&limit=20» изменит запрос, чтобы показать только результат, который содержит «Richard», и ограничит результат только 20.

Пример полной конечной точки для поиска репозиториев в GitHub с ключевым словом Tetris, языком JavaScript и сортировкой по убыванию:

https://api.github.com/search/repositories?q=tetris+language:javascript&sort=stars&order=desc

2. Метод

Метод — это тип запроса, который запрашивает клиент. Обычно мы используем 5 методов. ПОЛУЧИТЬ, ПОСТАВИТЬ, ПОСТАВИТЬ, ИСПРАВИТЬ И УДАЛИТЬ.

  • GET: чтобы получить/прочитать ресурс. Это также метод по умолчанию
  • POST: чтобы опубликовать/отправить/создать новый ресурс на сервере.
  • PUT & PATCH: для обновления ресурса на сервере. При использовании PUT мы должны отправить весь ресурс, даже если мы хотим обновить только одну из его частей. Итак, если мы хотим обновить только имя, нам нужно отправить имя, фамилию и любой другой ресурс. PATCH используется для применения частичного обновления. Итак, нам нужно отправить только имя, если мы хотим обновить имя.
  • УДАЛИТЬ: удалить ресурс.

3. Заголовки

Заголовок содержит информацию о HTTP-запросах и ответах. Например, тип клиента/браузера/формата, аутентификация и т. д. Вы можете найти список заголовков в разделе HTTP-заголовки Mozilla Developer Network.

4. Данные (тело)

Он содержит информацию, которую мы хотим отправить на сервер. Обычно используется с методом POST и PUT/PATCH.

Анатомия ответа

В отличие от запроса, ответ состоит только из двух частей:

1. Заголовок

Как и заголовок в запросе, заголовок в ответе содержит информацию о метаданных в ответе. Обычно он содержит данные формата и код состояния HTTP. Код состояния HTTP сообщает клиенту об их запросе. Он сгруппирован в 5:

  • 1xx (информационное): предназначено только для информационных целей (сообщает информацию на уровне протокола передачи). Этот статус не будет показан клиенту.
  • 2xx (успешно): запрос клиента был успешно выполнен.
  • 3xx (перенаправление): перенаправление на другой URL.
  • 4xx (ошибка клиента): ошибка клиентов. Например, неправильный адрес, неавторизованный, неверный запрос и т. д.
  • 5xx (ошибка сервера): ошибка сервера. Например, ошибка при обработке запроса (сервер не знает, как обработать запрос), плохой шлюз, сервер не работает или перегружен и т. д.

Вы можете найти полный Код состояния HTTP здесь.

2. Тело

Вы что-то запрашиваете, сервер обрабатывает и отвечает вам нужными вам данными. Он сохраняется в организме. Обычно форматируется как JSON (обозначение объекта JavaScript). Это похоже на объект JavaScript, но каждое свойство (или ключ) и значение должны быть заключены в двойные кавычки (кроме числа).

{
  "userId": "1b9d6bcd-bbfd-4b2d-9b5d-ab8dfbbd4bed",
  "name": "Pratama Sumirat"
  ...
}

Итак, мы будем создавать RESTful API. В следующем посте мы приступим к настройке базовой конфигурации. Спасибо за посещение и следите за обновлениями!

Ссылка: