数据请求发生了什么:
- 客户端向
API Server
发送数据请求 Server
接收到请求后查询数据库信息Server
返回数据给客户端。
客户端和服务端,连起!
实用小物件:body-parser
是非常常用的一个
express
中间件,作用是对post
请求的请求体进行解析。以下两行代码可以覆盖大部分的使用场景。
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({
extended: false }));
实操
为了能接收客户端的 API
请求,我们要在 Server 端 添加相应的路由。
主路由:
// app.ts
// 修改部分
var employeeRouter = require("./routes/employee");
app.use("/api/employee", employeeRouter);
子路由:
// routes/employee.ts
import express from "express";
import bodyParser from "body-parser";
const router = express.Router();
const urlencodedParser = bodyParser.urlencoded({
extended: false });
router.get("/getEmployee", (req, res) => {
res.json({
flag: 1,
msg: "No DB",
});
});
router.post("/createEmployee", urlencodedParser, async (req, res) => {
res.json({
flag: 1,
msg: "No DB",
});
});
module.exports = router;
同时,还需要修改客户端(ts-react-app)的请求代理配置。
// src/setupProxy.js
const {
createProxyMiddleware } = require("http-proxy-middleware");
module.exports = function (app) {
app.use(
createProxyMiddleware("/api", {
target: "http://localhost:4001",
})
);
};
验收
- ts-express:
- ts-react-app:
数据库建表
进入数据库:
$ mysql -u root -p
SQL 语句:
-- 创建用户
ALTER USER 'ts' IDENTIFIED WITH mysql_native_password BY 'typescript';
-- 授权
GRANT ALL PRIVILEGES ON *.* TO 'ts'@'