Бэкенд — это основа любого веб-приложения. Он позволяет создавать функциональные возможности на стороне сервера, которые обрабатывают запросы на стороне клиента и отвечают на них. В этой статье мы рассмотрим основные концепции серверного программирования, включая HTTP-запросы, базы данных и API-интерфейсы, а также предоставим примеры кода с использованием популярного фреймворка Express.
HTTP-запросы
В программировании серверной части вам часто потребуется обрабатывать запросы HTTP, такие как запросы GET, POST, PUT и DELETE. Вот пример обработки запроса GET в Express:
app.get('/hello', function(req, res) {
res.send('Привет, мир!');
});
В этом простом примере мы используем Express для создания маршрута, который обрабатывает запросы GET к пути «/hello». Когда на этот путь делается запрос GET, сервер отвечает сообщением «Hello, World!».
База данных
В программировании серверной части вы часто будете взаимодействовать с базами данных, используя SQL (язык структурированных запросов) или базы данных NoSQL, такие как MongoDB. Вот пример подключения к базе данных MongoDB в Express:
const mongoose = require('mongoose');
mongoose.connect('mongodb://localhost/my_database', {useNewUrlParser: true});
const db = mongoose.connection;
db.on('error', console.error.bind(console, 'connection error:'));
db.once('open', function() {
console.log('Connected to MongoDB database!');
});
В этом примере мы используем Mongoose (ORM для MongoDB) для подключения к локальной базе данных MongoDB с именем my_database. Мы также записываем сообщение в консоль после установления соединения.
API
В бэкэнде вы можете создавать свои собственные API-интерфейсы, предоставляющие функциональные возможности для использования другими разработчиками. Вот пример создания API в Express:
app.get('/api/todos', function(req, res) {
Todo.find(function(err, todos) {
if (err) return console.error(err);
res.send(todos);
});
});
В этом примере мы создаем конечную точку API, которая возвращает список задач, хранящихся в базе данных. Мы используем Mongoose для запроса базы данных и возврата результатов в ответе.
Функции
В бэкэнде вы можете определить функции для обработки различных частей функциональности вашего приложения. Вот пример функции, которая обрабатывает запрос POST для добавления новой задачи в базу данных:
app.post('/api/todos', function(req, res) {
const newTodo = new Todo({
title: req.body.title,
completed: false
});
newTodo.save(function(err) {
if (err) return console.error(err);
res.send(newTodo);
});
});
Переменные
В бэкэнд-программировании вы можете определить переменные для хранения данных, которые используются в вашем приложении. Вот пример определения переменной для хранения номера порта для нашего сервера Express:
let port = 3000;
app.listen(port, function() {
console.log('Server listening on port ' + port);
});
В этом примере мы определяем переменную с именем «порт» для хранения номера порта для нашего сервера Express. Затем мы используем метод «прослушивания», чтобы запустить сервер и записать в консоль сообщение, указывающее, какой порт прослушивает сервер.
Циклы
В бэкэнд-программировании вы можете использовать циклы для перебора массивов или других коллекций данных. Вот пример использования цикла для возврата списка задач из базы данных:
app.get('/api/todos', function(req, res) {
Todo.find(function(err, todos) {
if (err) return console.error(err);
const todoTitles = [];
for (let i = 0; i < todos.length; i++) {
todoTitles.push(todos[i].title);
}
res.send(todoTitles);
});
});
В этом примере мы используем цикл для перебора массива задач, возвращаемых из базы данных с помощью Mongoose. Мы помещаем заголовок каждой задачи в новый массив с именем «todoTitles». Затем мы отвечаем массивом todoTitles.
Заключение
Поняв эти основные концепции серверного программирования, вы сможете создавать более сложные приложения с использованием фреймворков и библиотек, использующих эти стандартные блоки. С предоставленными примерами кода вы сможете приступить к созданию собственных серверных функций в Express.