CRUD API управляет данными с помощью четырех основных операций с базой данных: создание, чтение, обновление и удаление. Вы можете создать простой CRUD API, используя только Express и базу данных PostgreSQL.

Начните с создания сервера Express, к которому вы будете подключать PostgreSQL. Затем создайте функции CRUD и подключите их к конечным точкам API. После этого вы сможете подключить Node к PostgreSQL и выполнять запросы к базе данных на каждом маршруте.

Предпосылки для создания API

Чтобы следовать этому руководству, вам необходимо:

  • Установите Node на свой компьютер.
  • Установите сервер PostgreSQL на свой компьютер.
  • Иметь базовые знания о Express.js.

Создать экспресс-сервер

К создать экспресс-сервер, начните с создания нового каталога и входа в него:

мкдир заметки
CD заметки

Затем инициализируйте npm:

инициализация npm -y

Эта команда сгенерирует пакет.json файл в папке заметок. Наконец, установите Экспресс.

нпм установить выражать

Создайте новый файл с именем index.js и добавьте следующий код.

константа
instagram viewer
экспресс = требовать("выражать");
константа приложение = экспресс();

приложение.использовать(выражать.urlencoded({
расширенный: истинный
}));

приложение.использовать(выражать.json())
app.listen (3000, () => console.log("Прослушивание порта 3000"));

Это создаст новый сервер, прослушивающий порт 3000.

Создайте базу данных PostgreSQL

Выполните следующую команду в командной строке psql, чтобы создать базу данных PostgreSQL с именем notedb.

постгрес=# СОЗДАТЬ БАЗУ ДАННЫХ notedb;

Запустите эту команду, чтобы перечислить все базы данных Postgres и убедитесь, что вы создали базу данных notesb:

постгрес=# \л

Подключиться к базе данных

Перво-наперво, подключите ваше приложение Node к серверу PostgreSQL. Вы можете использовать модуль node-Postgres.

Запустите следующее, чтобы установить его через npm:

нпм установить пг

Рекомендуется подключаться к базе данных в отдельном файле.

Создайте новый файл с именем db.js и добавьте следующее.

константа {Клиент} = требовать("пг");
константа {пользователь, хост, база данных, пароль, порт} = требовать(""./dbConfig");

константа клиент = новый Клиент({
пользователь,
хозяин,
база данных,
пароль,
порт,
});

клиент.соединять();
модуль.экспорт = клиент;

Здесь вы экспортируете строку подключения, которую будете использовать для связи с базой данных. Обратите внимание, что вы читаете параметры подключения к базе данных из файла конфигурации с именем dbConfig.js. Поэтому создайте dbConfig.js и добавьте в него следующие данные.

модуль.экспорт = {
пользователь: "{дбПользователь}",
хозяин: "{dbHost}",
база данных: "отмеченb",
пароль: "{дбпароль}",
порт: 5432,
};

Не забудьте заменить данные базы данных своими собственными локальными значениями.

Создайте таблицу PostgreSQL

В командной строке psql создайте таблицу с именем notes. Для начала подключитесь к базе данных notesb с помощью команды \c.

постгрес=# \c отмеченоb

Затем создайте таблицу в подключенной базе данных с помощью команды CREATE TABLE.

отмеченоb=# СОЗДАТЬ ТАБЛИЦУ примечаний (
ID СЕРИЙНЫЙ ПЕРВИЧНЫЙ КЛЮЧ,
примечание VARCHAR(255)
);

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

Создать заметку

Вместо выполнения CRUD-операций в маршрутах создайте в отдельном файле функции, которые будут взаимодействовать с базой данных.

Создайте вспомогательный файл с именем helper.js и импортируйте объект подключения из db.js.

константа клиент = требовать("./дб");

Используйте следующий код для создания функции createNote().

константа createNote = (req, res) => {
пытаться {
константа {примечание} = req.body;

если (! примечание) {
бросатьОшибка("Отправить заметку в тело запроса");
}

клиент.запрос(
"ВСТАВЛЯТЬВ примечания (примечание) ЦЕННОСТИ ($1)",
[примечание],
(ошибка, данные) => {
разрешение.статус(201).json({
ошибка: нулевой,
сообщение: "Создал новую заметку",
});
}
);
} ловить (ошибка) {
разрешение.статус(500).json({
ошибка: ошибка.сообщение,
сообщение: "Не удалось Создайтеновый примечание",
});
}
};

Эта функция сначала проверяет, содержит ли тело запроса примечание. Если заметка отсутствует, выдает ошибку.

Для создания примечания функция использует предложение INSERT. Он возвращает объект JSON, содержащий нулевое сообщение об ошибке и сообщение об успехе в случае успеха.

Получить все заметки

Чтобы получить все заметки из таблицы, используйте предложение SELECT *.

константа getNotes = (требование, разрешение) => {
пытаться {
клиент.запрос("ВЫБЕРИТЕ * ИЗ заметок", (ошибка, данные) => {
если (ошибка) бросать ошибаться;

разрешение.статус(200).json({
ошибка: нулевой,
заметки: данные.строки,
});
});
} ловить (ошибка) {
разрешение.статус(500).json({
ошибаться: ошибка.сообщение,
заметки: нулевой,
});
}
};

getNotes() отправляет массив заметок в объект ответа, если запрос выполнен успешно.

Получить заметку по ID

API также будет иметь конечную точку, которая возвращает заметку по идентификатору. В helper.js добавьте функцию getNoteById().

константа getNoteById = (требование, разрешение) => {
пытаться {
константа {id} = req.params;
клиент.запрос("ВЫБЕРИТЕ * ИЗ заметок, ГДЕ id = $ 1", [id], (ошибка, данные) => {
если (ошибка) бросать ошибаться;
разрешение.статус(200).json({
ошибка: нулевой,
примечание: данные.строки[0],
});
});
} ловить (ошибка) {
разрешение.статус(500).json({
ошибаться: ошибаться.сообщение,
примечание: нулевой,
});
}
};

Эта функция вернет объект JSON, содержащий примечание и объект ошибки.

Обновить примечание по идентификатору

Чтобы обновить заметку, вам нужна заметка и идентификатор этой заметки. Вы получите примечание из тела запроса и идентификатор из URL-адреса.

Функция updateNoteById() использует предложение UPDATE для обновления существующей заметки новой заметкой.

константа updateNoteById = (требование, разрешение) => {
пытаться {
константа {id} = req.params;
константа {примечание} = req.body;
клиент.запрос(
"ОБНОВИТЬ заметки УСТАНОВЛЕН примечание = $1КУДАя бы = $2",
[примечание, идентификатор],
(ошибка, данные) => {
если (ошибка) бросать ошибаться;

разрешение.статус(201).json({
ошибка: нулевой,
сообщение: "Обновленная заметка",
});
}
);
} ловить (ошибка) {
разрешение.статус(500).json({
ошибаться: ошибка.сообщение,
сообщение: "Не удалось обновить заметку",
});
}
};

Эта функция возвращает сообщение об успехе, если таблица обновлена, и сообщение об ошибке, если нет.

Удалить заметку по идентификатору

Чтобы удалить заметку по ID из таблицы, используйте следующий код.

константа deleteNote = (req, res) => {
пытаться {
константа {id} = req.params;
клиент.запрос("УДАЛИТЬ ИЗ заметок, ГДЕ id=$1", [id], (ошибка, данные) => {
если (ошибка) бросать ошибаться;

разрешение.статус(200).json({
ошибка: нулевой,
сообщение: "Примечание удалено",
});
});
} ловить (ошибка) {
разрешение.статус(500).json({
ошибка: ошибка.сообщение,
сообщение: "Не удалось удалить заметку",
});
}
};

Теперь, когда вы создали все функции CRUD, экспортируйте их.

В helper.js добавьте следующее.

модуль.экспорт = { createNote, getNotes, getNoteById, updateNoteById, deleteNote};

Вы будете импортировать их в index.js при создании конечных точек API.

Создание маршрутов API

Последним шагом является создание конечных точек API в index.js для каждой из операций CRUD.

Начните с импорта файла helper.js.

константа дБ = требовать(""./помощник")

Затем создайте каждую конечную точку.

приложение.получить("/notes", db.getNotes);
приложение.получить("/note/:id", db.getNoteById);
app.put("/note/:id", db.updateNoteById);
приложение.пост("/note", db.createNote);
приложение.удалить("/note/:id", db.deleteNote);

REST API для обновления вашей базы данных

Когда вы закончите, вы можете проверить, работает ли ваш API, используя клиент REST, такой как Postman, или написав модульные тесты. Вы должны убедиться, что все пять конечных точек работают так, как вы ожидаете.

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