在 express 中从单个 POST 调用调用多个 DELETE 调用?
Call multiple DELETE calls from a single POST call in express?
我在一个项目中使用json-server(基于express)和gulp-json-srv。我有以下 "customRoute":
'/deletefavorites': {
method: 'POST',
handler: function(req, res, next) {
req.method = 'DELETE';
var arr = req.body;
for (var i = 0; i < arr.length; i++) {
req.url = '/favorites/' + arr[i];
res.redirect(req.url);
}
}
}
数组 req.body 只包含 "favorites" 的 ID。所以 req.body 看起来像这样:
{[
"id": "123",
"id":"124",
...
]}
问题是重定向只重定向这个请求一次然后出错。这意味着我只能删除一条记录,而且它也不处理 "method",因为我只能在重定向中发送 URL。
我想要的是这样的:
for (var i = 0; i < arr.length; i++) {
req.url = '/favorites/' + arr[i];
app.handle(req, res, next);
}
next();
有了新参数。这样的事情可能吗?我搜索了许多相关的堆栈溢出问题,但我找到的唯一解决方案是在那里使用 xhr 请求,但我认为 express 应该有办法处理这个问题?
这是在服务中调用的示例方法
const express = require('express');
const app = express();
const request = require('request');
app.post('/deleteFavorites', (req, res) => {
req.body = [
{"id": "123"},
{"id":"124"},
]
console.log("deleteFavorites was called?")
request.delete({
url: "http://" + req.headers.host + "/favorites/delete",
body: req.body,
json: true
}, function(error, response, body){
console.log(body, error, response);
res.status(200).send("all good");
});
});
app.delete('/favorites/delete', (req, res) => {
console.log("favorites/delete was called?")
res.status(200).send("all good");
});
app.listen(9090);
理想的方法是通过 re-usable 函数来实现,但由于您提到这不是一种选择,所以这是另一种可以使用的方法。
但我建议将其限制为一次调用而不是多次调用,否则可能会导致服务器请求爆炸。如果您在 /deleteFavorites
中向服务器发送 100 个 id,那么这也会引发服务器请求,导致其中大部分超时
我在一个项目中使用json-server(基于express)和gulp-json-srv。我有以下 "customRoute":
'/deletefavorites': {
method: 'POST',
handler: function(req, res, next) {
req.method = 'DELETE';
var arr = req.body;
for (var i = 0; i < arr.length; i++) {
req.url = '/favorites/' + arr[i];
res.redirect(req.url);
}
}
}
数组 req.body 只包含 "favorites" 的 ID。所以 req.body 看起来像这样:
{[
"id": "123",
"id":"124",
...
]}
问题是重定向只重定向这个请求一次然后出错。这意味着我只能删除一条记录,而且它也不处理 "method",因为我只能在重定向中发送 URL。
我想要的是这样的:
for (var i = 0; i < arr.length; i++) {
req.url = '/favorites/' + arr[i];
app.handle(req, res, next);
}
next();
有了新参数。这样的事情可能吗?我搜索了许多相关的堆栈溢出问题,但我找到的唯一解决方案是在那里使用 xhr 请求,但我认为 express 应该有办法处理这个问题?
这是在服务中调用的示例方法
const express = require('express');
const app = express();
const request = require('request');
app.post('/deleteFavorites', (req, res) => {
req.body = [
{"id": "123"},
{"id":"124"},
]
console.log("deleteFavorites was called?")
request.delete({
url: "http://" + req.headers.host + "/favorites/delete",
body: req.body,
json: true
}, function(error, response, body){
console.log(body, error, response);
res.status(200).send("all good");
});
});
app.delete('/favorites/delete', (req, res) => {
console.log("favorites/delete was called?")
res.status(200).send("all good");
});
app.listen(9090);
理想的方法是通过 re-usable 函数来实现,但由于您提到这不是一种选择,所以这是另一种可以使用的方法。
但我建议将其限制为一次调用而不是多次调用,否则可能会导致服务器请求爆炸。如果您在 /deleteFavorites
中向服务器发送 100 个 id,那么这也会引发服务器请求,导致其中大部分超时