解释HTTP请求的不同类型
Hypertext Transfer Protocol (HTTP) 定义了多种请求方法,用于描述对某个资源应采取的操作。最常用的HTTP请求方法有 GET、POST、PUT、PATCH和DELETE 。
让我们了解一下HTTP请求的用例:
- GET: GET请求从web服务器读取或检索数据。如果成功获取服务器上的数据,则HTTP状态码为 200(OK)。
- POST: POST请求用于向服务器传输数据。如果创建成功,它会产生一个HTTP状态码为 201 的响应。
- PUT: PUT请求用于修改服务器上的数据。它会将特定位置的所有内容替换为正文负载中的数据。如果没有与请求匹配的资源,则会生成一个新资源。
- PATCH: PATCH请求与PUT请求相同,唯一的区别是它只修改数据的一部分。
- DELETE: DELETE请求用于从服务器上删除特定位置的数据。
现在让我们详细介绍每种请求方法。我们使用一个基于 NodeJS服务器 和 MongoDB数据库 的简单应用程序。NodeJS服务器将处理所有请求并做出适当的响应。
项目设置:
步骤1: 创建一个名为 API 的文件夹,并运行以下命令来启动NodeJS应用程序。
npm init -y
步骤2: 使用以下命令安装必要的npm软件包。
npm install express body-parser mongoose nodemon
步骤3: 在您的项目目录下创建一个名为 index.js 的文件。
项目结构: 这是我们的项目目录现在应该显示出来的样子。
步骤4: 要求并设置 express app ,使其开始监听请求。我们的服务器设置在 端口3000 上。
const express = require("express");
const bodyParser = require("body-parser");
const app = express();
app.use(express.json());
app.use(
bodyParser.urlencoded({
extended: true
})
);
app.listen(3000, () => {
console.log("Server started on port 3000");
});
步骤5: 在package.json文件中包含以下脚本。这意味着我们可以使用 npm start 来启动我们的服务器,它将使用先前安装的 Nodemon包 。
package.json
"scripts": {
"start": "nodemon index.js"
},
步骤6: 在终端中键入 npm start 以启动服务器。
步骤7: 需要引入mongoose包并连接到MongoDB数据库。如果您在本地项目中工作,MongoDB服务器的URL可能是以下形式: mongodb://localhost:27017/数据库名称。 27017是默认端口。
const mongoose = require("mongoose");
mongoose
.connect("mongodb://localhost:27017/wikiDB", {
useNewUrlParser: true,
})
.then(() => {
console.log("Database connected");
})
.catch((err) => {
console.log("Connection failed");
})
步骤8: 重新启动服务器,检查数据库是否成功连接。
如何发起POST请求?
步骤1: 创建一个 模型 ,以概述我们数据库的结构。我们有一个包含了数据库结构信息的模式。它包含了一个 标题 和 内容 属性。这两个字段都有类型且是必需的。
const articleSchema = {
title: {
type: String,
required: true,
},
content: {
type: String,
required: true,
},
};
const Article = mongoose.model(
"Article", articleSchema);
步骤2: 为POST请求创建一个 端点 ,并使用我们刚刚创建的模型将数据体添加到POST。 标题 和 内容 将接受来自 请求体 的标题和内容。此信息通常通过客户端应用程序(如Postman或Insomnia)获取。
制作和处理POST请求:
app.post("/articles", (req, res) => {
const newArticle = new Article({
title: req.body.title,
content: req.body.content,
});
newArticle.save((err) => {
if (!err) {
res.send("Successfully added a new article.");
} else {
res.send(err);
}
});
});
步骤3: 打开Postman,将数据添加到请求体中, 然后点击发送。
步骤4: 检查数据库,您将看到您刚刚创建的记录。
进行get请求的创建和处理:
步骤1: 从数据库中获取数据,我们需要使用Mongoose的 Model.find() 方法。
app.get("/getAllarticles", async (req, res) => {
try {
const article = await Article.find({});
if (article.length != 0) {
res.send(article);
} else {
res.send("No article found");
}
} catch (error) {
console.log(error);
}
});
步骤2: 使用Postman向服务器发送GET请求。
制作和处理补丁请求:
步骤1: 我们将使用mongoose的 findOneAndUpdate() 方法,通过标题找到并更新一个文档。
app.patch("/articles/:articleTitle", (req, res) => {
Article.findOneAndUpdate(
{ title: req.params.articleTitle },
{ $set: req.body },
function (err) {
if (!err) {
res.send("Successfully updated article.");
} else {
res.send(err);
}
}
);
});
步骤2: 现在让我们测试一下。提及您想更新的文章的 标题 ,并在正文中添加更新后的内容。最后,点击“发送”。
步骤3: 发送GET请求到服务器,检查特定文章是否已更新,您将会发现特定文章的内容已改变。
创建和处理删除请求:
步骤1: 为了删除特定的文章,我们将使用mongoose的 deleteOne() 方法。deleteOne()方法首先会通过文章标题查找到相应的文章,然后像PATCH请求的情况一样将其删除。
app.delete("/articles/:articleTitle", (req, res) => {
Article.deleteOne({ title: req.params.articleTitle }, function (err) {
if (!err) {
res.send("Successfully deleted the corresponding article.");
} else {
res.send(err);
}
});
});
步骤2: 提到您想删除的文章的 标题 并将请求发送到服务器。
步骤3: 为了检查特定文章是否被删除,向服务器发送一个GET请求,你会发现该特定文章已从数据库中删除。
极客教程