我正在使用PUT方法的获取请求并给出一个主体,但当我调用我在服务器页面上定义的端点时,我一直未定义。
有人知道为什么吗?
下面是调用的来源:
<tr>
<td><%= index %></td>
<td class="editable" id="item">
<%= item %>
</td>
<td class="editable" id="desc">
<%= desc %>
</td>
<td class="editable" id="status">
<%= status %>
</td>
<td class="editable" id="priority">
<%= priority %>
</td>
<td><button id="delete-button">Delete</button>
<button onclick="refetch(this)">Edit</button>
</td>
</tr>
<script>
async function refetch(btn) {
if (btn.innerHTML === 'Edit') {
await fetch('http://localhost:3000/todo', {
method: 'PUT',
body: {
edit: 'true'
}
})
}
}
</script>
和我的端点:
app.put("/todo", (req, res) => {
console.log(req.body);
});
虽然问题没有提到,但我认为您正在使用express framework。
这样做的原因很可能是您没有使用body-parser来允许向端点发送数据。
您可以在此找到更多关于https://stackoverflow.com/questions/38306569/what-does-body-parser-do-with-express#:~:text=No%20need%20to%20install%20body,you%20will%20receive%20post%20request..
试试这个:npm install body-parser
然后在你的app.put(/todo)
之前加上这个:
app.use(require("body-parser").urlencoded({ extended: false }));
然后再试一次,我建议您在进行端到端测试之前使用Postman测试您的端点。
下面是一个工作示例
在邮递员
我希望它有帮助,祝你好运!