所以我想做的是在对json服务器有请求时手动覆盖响应。我很好,但是我不知道如何添加一些内容以将原始请求也存储在数据库中。
这是我的代码(我正在从请求和静态uuid发送名称作为响应) 下一个();如果步骤失败则无法设置标头。
find_element_by_css_selector("a.s-color-twister-title-link")
答案 0 :(得分:0)
如果要将数据从中间件传递到任何路由,则可以使用req对象而不是res对象分配值。
app.use(function(req.res)) {
req.custom_data = {
id: "a23e1b13-cf69-461c-aa8a-a0eb99e41350",
name: req.body['name'],
revision: "1"
};
next();
}
您可以从其他位置执行此操作。
module.exports = (req, res, next) => {
res.jsonp(req.custom_data)//something like this
}
这可能会对您有所帮助。
答案 1 :(得分:0)
你是对的。
例如,我们不能:
server.js
const jsonServer = require("json-server")
const server = jsonServer.create()
const router = jsonServer.router("db.json")
server.use(jsonServer.defaults())
server.use(jsonServer.bodyParser)
server.use((req, res, next) => {
if (req.method === "POST" && req.url === "/business") {
res.status(201)
res.jsonp({
id: "a23e1b13-cf69-461c-aa8a-a0eb99e41350",
name: req.body["name"],
revision: "1"
})
}
next()
})
server.use(router)
server.listen(3000, () => {
console.log("JSON Server is running")
})
或者我们得到:Error [ERR_HTTP_HEADERS_SENT]: Cannot set headers after they are sent to the client
,当我们运行node server.js
时,因为调用res.jsonp
时我们已经设置并发送了标头,所以我们不能通过调用{{1 }}。
我们有两种选择。
选项1。
server.js
server.use(router)
db.json
const jsonServer = require("json-server")
const server = jsonServer.create()
const router = jsonServer.router("db.json")
server.use(jsonServer.defaults())
server.use(router)
server.listen(3000, () => {
console.log("JSON Server is running")
})
现在,我们可以发布到{
"business": []
}
端点,并将请求正文保存到数据库中。但是,我们无法修改201状态,也不能将请求正文更改为其他内容。
选项2。
server.js
http://localhost:3000/business
现在我们得到了正确的响应,但是由于我们正在调用const jsonServer = require("json-server")
const server = jsonServer.create()
server.use(jsonServer.defaults())
server.use(jsonServer.bodyParser)
server.post("/business", (req, res, next) => {
res.status(201)
res.jsonp({
id: "a23e1b13-cf69-461c-aa8a-a0eb99e41350",
name: req.body["name"],
revision: "1"
})
next()
})
server.listen(3000, () => {
console.log("JSON Server is running")
})
business
密钥中
但是,您可以在自己的代码中使用它,并将其保存在其他位置(或写入您自己的数据库),因为此响应将从Promise中返回。