? Выполнение запроса POST с использованием Fetch API
Как вы упомянули, вам необходим маршрут POST
на вашем сервере, чтобы справиться с этим.
Ваш интерфейс должен выполнить вызов AJAX POST для этой конечной точки с этим вновь созданным объектом. Вы можете использовать Featch API для этого:
fetch('http://localhost:8080/api/friends', {
method: "POST",
headers: {
"Content-Type": "application/json; charset=utf-8",
},
body: JSON.stringify({
name: "Ahmed",
photo: "https://media.licdn.com/.../foo.jpg",
scores: [5, 1, 4, 4, 5, 1, 2, 5, 4, 1],
}),
});
? Изменить данные в бэкэнде
Затем, если предположить, что это простой пример обучения, у вас есть два варианта:
- Файл
friends.json
уже загружен в память в виде массива и просто добавьте в него новый элемент.
- Загружать, анализировать и сохранять
friends.json
при каждом запросе.
Если это рабочий сервер, то вы можете рассмотреть возможность использования REDIS, MongoDB или любой другой базы данных, которая соответствует вашим потребностям.
Здесь вы можете увидеть их обоих:
// This will be loaded and parsed already (only used in option 1):
const friends = require("../data/friends.json");
// Only used in option 2:
const fs = require('fs');
// Tell the server to parse JSON bodies in your requests:
const bodyParser = require("body-parser");
app.use(bodyParser.json()); // Support JSON-encoded bodies.
// Get existing friends:
app.post('/api/friends', function(req, res, next) {
// Option 1, persisted in memory:
res.json(friends);
// Option 2, loaded and saved everytime:
try {
res.json(JSON.parse(fs.readFileSync("../data/friends.json")));
} catch(err) {
// JSON.parse might fail:
next(err);
}
});
// Create new friend:
app.post('/api/friends', function(req, res, next) {
// Option 1, persisted in memory:
friends.push(req.body); // This should be validated properly!
res.json(friends);
// Option 2, loaded and saved everytime:
try {
const friends = JSON.parse(fs.readFileSync("../data/friends.json"));
friends.push(req.body); // This should be validated properly!
fs.writeFileSync("../data/friends.json", JSON.stringify(friends));
res.json(friends);
} catch(err) {
// JSON.parse or fs.writeFileSync might fail:
next(err);
}
});
✨ Рекомендуемый способ использования body-parser
В качестве дополнительного предложения, даже если вы увидите, что body-parser
используется как app.use(bodyParser.json())
во многих ресурсах, рекомендуемый способ его использования - добавить его только к маршруту. это актуально для:
Экспресс для конкретного маршрута
Этот пример демонстрирует добавление парсеров тела специально к нужным им маршрутам. В общем, это наиболее рекомендуемый способ использования body-parser с Express.
Итак, в вашем случае вы бы сделали:
const bodyParser = require("body-parser");
const jsonParser = bodyParser.json();
...
app.post('/api/friends', jsonParser, function(req, res, next) { ... }