CRUD API управлява данни чрез четири основни операции в базата данни: създаване, четене, актуализиране и изтриване. Можете да създадете прост CRUD API само с Express и PostgreSQL база данни.

Започнете със създаване на Express сървър, към който ще свържете PostgreSQL. След това създайте функциите CRUD и ги свържете към крайните точки на API. След като го направите, ще можете да свържете Node към PostgreSQL и да изпълнявате заявки към база данни по всеки маршрут.

Предпоставки за изграждане на API

За да следвате този урок, трябва:

  • Инсталирайте Node на вашата машина.
  • Инсталирайте PostgreSQL сървъра на вашата машина.
  • Имате основни познания за Express.js.

Създайте експресен сървър

Да се създайте Express сървър, започнете, като създадете нова директория и я въведете:

mkdir бележки
cd бележки

След това инициализирайте npm:

npm init -y

Тази команда ще генерира a package.json файл в папката с бележки. Накрая инсталирайте Express.

npm Инсталирай експрес

Създайте нов файл, наречен index.js и добавете следния код.

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

ап.използване(експрес.urlencoded({
разширено: вярно
}));

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

Това ще създаде нов сървър, който слуша на порт 3000.

Създайте PostgreSQL база данни

Изпълнете следната команда в командния ред на psql, за да създадете PostgreSQL база данни, наречена notedb.

postgres=# СЪЗДАВАНЕ НА БАЗА ДАННИ notedb;

Изпълнете тази команда за избройте всички бази данни на Postgres и проверете дали сте създали базата данни notedb:

postgres=# \l

Свържете се с базата данни

Първо най-важното, свържете вашето приложение Node към сървъра PostgreSQL. Можете да използвате модула node-Postgres.

Изпълнете следното, за да го инсталирате чрез npm:

npm Инсталирай стр

Като добра практика свържете се с базата данни в отделен файл.

Създайте нов файл, наречен db.js и добавете следното.

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

конст клиент = нов Клиент ({
потребител,
домакин,
база данни,
парола,
порт,
});

клиент.свързване();
модул.износ = клиент;

Тук експортирате низа за връзка, който ще използвате за комуникация с базата данни. Имайте предвид, че четете настройките за връзка с базата данни от конфигурационен файл, наречен dbConfig.js. Затова създайте dbConfig.js и добавете следните данни към него.

модул.износ = {
потребител: "{dbUser}",
домакин: "{dbHost}",
база данни: "отбелязаноb",
парола: "{dbPassword}",
порт: 5432,
};

Не забравяйте да замените подробностите за базата данни с вашите собствени локални стойности.

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

В командния ред на psql създайте таблица, наречена бележки. Като начало се свържете с базата данни notedb с помощта на командата \c.

postgres=# \c отбелязаноb

След това създайте таблица в свързаната база данни с помощта на командата CREATE TABLE.

отбелязаноb=# СЪЗДАВАНЕ на бележки за ТАБЛИЦА (
ID SERIAL PRIMARY KEY,
бележка VARCHAR(255)
);

Тази таблица е доста проста. Има само идентификатор, който е автоматично генериран първичен ключ и текстово поле, наречено бележка.

Създайте бележка

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

Създайте помощен файл, наречен helper.js и импортирайте обекта за връзка от db.js.

конст клиент = изискват("./db");

Използвайте следния код, за да създадете функцията createNote().

конст createNote = (req, res) => {
опитвам {
конст { забележка } = req.body;

ако (!бележка) {
хвърлямГрешка(„Изпратете бележка в тяло на заявката“);
}

клиент.заявка(
"ВМЪКНЕТЕINTO бележки (бележка) СТОЙНОСТИ ($1)",
[Забележка],
(грешка, данни) => {
рез.състояние(201).json({
грешка: нула,
съобщение: "Създадена е нова бележка",
});
}
);
} улов (грешка) {
рез.състояние(500).json({
грешка: грешка.съобщение,
съобщение: „Неуспешно създавамнов Забележка",
});
}
};

Тази функция първо проверява дали тялото на заявката включва бележка. Ако бележката липсва, тя извежда грешка.

За да създадете бележка, функцията използва клаузата INSERT. Той връща JSON обект, съдържащ нулево съобщение за грешка и съобщение за успех, ако е успешно.

Вземете всички бележки

За да получите всички бележки от таблицата, използвайте клаузата SELECT *.

конст getNotes = (req, res) => {
опитвам {
client.query("ИЗБЕРЕТЕ * ОТ бележките", (грешка, данни) => {
ако (грешка) хвърлям греша;

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

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

Вземете бележка по ID

API също ще има крайна точка, която връща бележка по ID. В helper.js добавете функция getNoteById().

конст getNoteById = (req, res) => {
опитвам {
конст { id } = req.params;
client.query("ИЗБЕРЕТЕ * ОТ бележките WHERE id=$1", [id], (грешка, данни) => {
ако (грешка) хвърлям греша;
рез.състояние(200).json({
грешка: нула,
Забележка: данни.редове[0],
});
});
} улов (грешка) {
рез.състояние(500).json({
грешка: грешка.съобщение,
Забележка: нула,
});
}
};

Тази функция ще върне JSON обект, съдържащ бележката и обект за грешка.

Актуализиране на бележка по ID

За да актуализирате бележка, имате нужда от бележка и идентификатора на тази бележка. Ще получите бележката от тялото на заявката и идентификатора от URL адреса.

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

конст updateNoteById = (req, res) => {
опитвам {
конст { id } = req.params;
конст { забележка } = req.body;
клиент.заявка(
"АКТУАЛИЗИРАНЕ бележки КОМПЛЕКТ бележка = $1КЪДЕТОдокумент за самоличност = $2",
[бележка, идентификатор],
(грешка, данни) => {
ако (грешка) хвърлям греша;

рез.състояние(201).json({
грешка: нула,
съобщение: "Актуализирана бележка",
});
}
);
} улов (грешка) {
рез.състояние(500).json({
грешка: грешка.съобщение,
съобщение: "Актуализирането на бележката не бе успешно",
});
}
};

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

Изтриване на бележка по ID

За да изтриете бележка по ID от таблицата, използвайте следния код.

конст deleteNote = (req, res) => {
опитвам {
конст { id } = req.params;
client.query("ИЗТРИВАНЕ ОТ бележките WHERE 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.

конст db = изискват("./помощник")

След това създайте всяка крайна точка.

app.get("/notes", db.getNotes);
app.get("/note/:id", db.getNoteById);
app.put("/note/:id", db.updateNoteById);
app.post("/note", db.createNote);
app.delete("/note/:id", db.deleteNote);

REST API за актуализиране на вашата база данни

След като сте готови, можете да проверите дали вашият API работи, като използвате REST клиент като Postman или като напишете модулни тестове. Трябва да сте в състояние да гарантирате, че петте крайни точки работят както очаквате.

Можете също така да проверявате и управлявате данните, които сте добавили към базата данни, като използвате инструмента pgAdmin. Това е GUI приложение, което улеснява администрирането на бази данни и взаимодействието със сървърите на PostgreSQL.