好的,我正在尝试构建我的第一个REST API,并设置模式,并尝试使用VS Code中的其余客户端来测试它。有些如何所有的字符串输入在我的json体不被识别,而不是他们是空的。我不确定哪里出了问题,有什么建议我应该仔细检查哪里可能出错吗?
模型/wordDetailSchema.js
const mongoose = require("mongoose");
const WordDetailSchema = new mongoose.Schema({
name: {
type: String,
// required: true,
},
partOfSpeech: {
type: String,
// required: true,
},
definition: {
type: String,
// required: [true, "Word meaning is required"],
},
synonyms: {
type: [String],
},
examples: {
type: [String],
},
});
module.exports = mongoose.model("WordDetail", WordDetailSchema);
路线/wordDetails.js
const expree = require("express");
const router = expree.Router();
const WordDetail = require("../models/WordDetailSchema");
//Creating one
router.post("/", async (req, res) => {
const wordDetail = new WordDetail({
name: req.body.name,
partOfSpeech: req.body.partOfSpeech,
definition: req.body.definition,
synonyms: req.body.synonym,
examples: req.body.example,
});
try {
const newWordDetail = await wordDetail.save();
res.status(201).json(newWordDetail);
} catch (err) {
res.status(400).json({ message: err.message });
}
});
module.exports = router;
脚本,我曾经使用REST客户端发布:route.rest
POST http://localhost:3001/wordDetails
Content-Type: application/json
{
"name" : "can",
"partOfSpeech" : "verb",
"definition" : "be able to.",
"synonyms" : [],
"examples" : ["they can run fast"],
}
Server.js:
require("dotenv").config();
const express = require("express");
const app = express();
var bodyParser = require("body-parser");
const mongoose = require("mongoose");
mongoose.connect(process.env.DATABASE_URL, { useNewUrlParser: true });
const db = mongoose.connection;
db.on("error", (error) => console.error(error));
db.once("open", () => console.log("Connected to database"));
app.use(express.json());
const wordsRouter = require("./routes/words");
const wordDetailRouter = require("./routes/wordDetails");
app.use(bodyParser.json());
app.use("/words", wordsRouter);
app.use("/wordDetails", wordDetailRouter);
app.listen(3001, () => console.log("Server Started"));
结果是:
HTTP/1.1 201 Created
X-Powered-By: Express
Content-Type: application/json; charset=utf-8
Content-Length: 70
ETag: W/"46-Hq/hIWt5lGAlv2gNJQxk5mUEYHg"
Date: Fri, 10 Sep 2021 04:41:14 GMT
Connection: close
{
"synonyms": [],
"examples": [],
"_id": "613ae1eac4b78ca3080dbed8",
"__v": 0
}
尝试使用
app.use(express.json()); //Used to parse JSON bodies
app.use(express.urlencoded({ extended: true })); //Parse URL-encoded bodies
,因为您不再需要body解析器模块ifexpress的版本是4.16+