慕桂英4014372
2022-12-22 11:40:56
我正在構建這個學校項目,我們必須在 NodeJs 和自由選擇的前端中創建自己的 API。我寫了以下代碼:[在公共地圖] app.jsfunction getAll() { console.log("Get all") makeRequest("/poems", "GET")} async function getRandomPoem() { const ids = [1, 2, 3, 4, 5, 6, 7] const randomId = ids[Math.floor(Math.random() * ids.length)] const arrayofPoems = await fetch("/poems/" + randomId, {method: "GET"}) const data = await arrayofPoems.json() const titleBox = document.getElementById("title") const authorBox = document.getElementById("author") const textBox = document.getElementById("text") titleBox.innerText = data.title authorBox.innerText = data.author textBox.innerText = data.text}function addPoem() { event.preventDefault(); let title = document.getElementById("titleInput").value let author = document.getElementById("authorInput").value let text = document.getElementById("textInput").value let newPoem = [{ id: 8, title: "Aaa", author: "Ccc", text: "Ddd" }] makeRequest("/poems/", "post", newPoem)}async function makeRequest(url, reqMethod, body) { const response = await fetch(url, { // headers = { "Content-Type": "application/json" }, method: reqMethod, body:JSON.stringify(body) }) console.log(response) const data = await response.json() console.log(data)}[這里是對本地服務器的請求] server.jsconst express = require('express');const { poems } = require('./Poems/poemsArray');const app = express();const port = 8080;const allPoems = require('./Poems/poemsArray')app.use(express.json())app.use("/", express.static('public'))app.listen(port, console.log(`App listening on port ${port}`))
2 回答

LEATH
TA貢獻1936條經驗 獲得超7個贊
你使用 headers = 這是無效的。嘗試標頭:{}。當你得到空對象時,嘗試記錄請求。也有可能正文作為字符串發送,express.json() 中間件無法解析數據。結果,您得到空對象。
async function makeRequest(url, reqMethod, body) {
const response = await fetch(url, {
headers : { "Content-Type": "application/json" },
method: reqMethod,
body:JSON.stringify(body)
})
console.log(response)
const data = await response.json()
console.log(data)
}

神不在的星期二
TA貢獻1963條經驗 獲得超6個贊
如果您在一段時間后嘗試訪問郵遞員,它也可能在發送正文時引起問題。在我的例子中,我已經完成了 API 中的所有更改,添加了路由器,刪除了驗證等,但最后罪魁禍首是郵遞員,因為無論我發送什么數據,它都將 request.body 顯示為 {}(空)。在我重新安裝郵遞員后它工作了!我只是覺得更快樂,我花了3-4個小時所以你也可以考慮這個選項。
添加回答
舉報
0/150
提交
取消