我有一个运行Hapi的Nodejs API服务器。为了进行测试,我有一个带有一些Javascript的简单HTML页面,该页面使用fetch命中API来获取某些数据。该页面上的Javascript如下所示:
fetch("http://localhost:3000/lov", {
method: "POST",
mode: "cors",
headers: {"Content-Type": "application/json"},
body: {P_LOV_NAME: "RTSBLANK"}
}).then(function(res) {
return res.json();
}).then(displayData);
function displayData(data) {
let elem = document.getElementById("screen");
elem.innerHTML = JSON.stringify(data, null, 2);
console.log(data);
}
问题在于Hapi端点似乎没有上述请求的主体。代码如下:
“使用严格”;
exports.plugin = {
name: "LOV",
version: "1.0.0",
register: async function (server, options) {
server.route({
config: {
cors: {
origin: ['*'],
additionalHeaders: ['cache-control', 'x-requested-with']
}
},
method: "POST",
path: "/lov",
handler: function(request, h) {
return getLOV(request, h, server);
}
});
}
};
function getLOV(request, h, server) {
console.log("Get LOV Request: ", request.payload);
let res = server.methods.response();
res.error = false;
res.msg = "Retrieved LOV.";
if (request.payload && request.payload.P_LOV_NAME == "RTSBLANK") {
res.data = server.methods.fake().lovTestUser;
} else {
res.data = server.methods.fake().lovBlank;
}
return res;
}
在getLOV()函数中,request.payload始终为null。我看过了请求对象,它似乎没有在任何地方的身体对象。我在这里有点不知所措,因为这似乎并不复杂。我是否缺少明显而愚蠢的东西?
答案 0 :(得分:0)
的确是我忽略了然后想到了的愚蠢之举。请求的正文不能是JSON对象。您必须首先在其上使用JSON.stringify()。