React 技术栈加Express打造的前后端博客项目,揭秘第九弹:前端管理界面发表文章功能和后端接口
2024-02-19 12:23:35
React 技术栈加Express打造的前后端博客项目(九):前端管理界面发表文章功能加后端对应接口
本篇将带领大家一起构建前端管理界面发表文章功能,并详细解析对应的后端接口。
- 前端管理界面发表文章功能
首先,我们先设计前端管理界面的发表文章功能。打开/src/components/Admin
组件,在其中添加一个Article
组件,代码如下:
// src/components/Admin/Article.js
import React, { useState } from "react";
import { Button, Input, Form } from "antd";
import { createArticle } from "../../api/article";
const Article = () => {
const [title, setTitle] = useState("");
const [content, setContent] = useState("");
const handleSubmit = async (e) => {
e.preventDefault();
const article = {
title,
content,
};
const result = await createArticle(article);
if (result.status === 201) {
alert("文章发表成功!");
} else {
alert("文章发表失败,请重试!");
}
};
return (
<div>
<h1>发表文章</h1>
<Form onFinish={handleSubmit}>
<Form.Item label="标题">
<Input value={title} onChange={(e) => setTitle(e.target.value)} />
</Form.Item>
<Form.Item label="内容">
<Input.TextArea
value={content}
onChange={(e) => setContent(e.target.value)}
/>
</Form.Item>
<Form.Item>
<Button type="primary" htmlType="submit">
发表
</Button>
</Form.Item>
</Form>
</div>
);
};
export default Article;
然后,在/src/routes/Admin.js
文件中,添加一个指向/article
路由的路由,代码如下:
// src/routes/Admin.js
import React from "react";
import { Route, Switch } from "react-router-dom";
import Article from "../components/Admin/Article";
const Admin = () => {
return (
<Switch>
<Route path="/article" component={Article} />
</Switch>
);
};
export default Admin;
这样,我们就可以在浏览器中访问/admin/article
来发表文章了。
- 后端对应接口
接下来,我们再来解析一下对应的后端接口。打开/src/api/article.js
文件,找到createArticle
函数,代码如下:
// src/api/article.js
import axios from "axios";
export const createArticle = async (article) => {
const result = await axios.post("/api/articles", article);
return result;
};
可以看到,这个接口的作用是将文章内容发送到后端,并保存到数据库中。在接口的实现中,我们使用了axios
库来发送HTTP请求,并将文章内容作为请求体发送到后端。
在后端,我们还需要编写一个对应的路由来处理这个请求。打开/src/routes/api.js
文件,找到articles
路由,代码如下:
// src/routes/api.js
import express from "express";
const router = express.Router();
router.post("/articles", async (req, res) => {
const article = req.body;
// 这里省略了对文章内容的验证和保存逻辑
res.status(201).json({
message: "文章发表成功",
});
});
可以看到,这个路由的作用是接收前端发送过来的文章内容,并将其保存到数据库中。在路由的实现中,我们使用了express
框架来定义路由,并使用body-parser
中间件来解析请求体中的JSON数据。
然后,我们需要将这个路由添加到后端服务器中。打开/src/index.js
文件,找到app
对象,代码如下:
// src/index.js
import express from "express";
import apiRouter from "./routes/api";
const app = express();
app.use("/api", apiRouter);
可以看到,我们在这里将/api
路由添加到app
对象中,这样当请求到达/api
时,就会被转发到apiRouter
中进行处理。
最后,我们需要启动后端服务器。打开终端,进入项目根目录,然后运行以下命令:
npm start
这样,我们的后端服务器就启动了。
现在,我们就可以在浏览器中访问/admin/article
来发表文章了,发表的文章内容将被发送到后端,并保存到数据库中。