Vue博客搭建(4)后端初始化

113 阅读3分钟

众所周知目前的互联网服务大多都采用了前后端分离的设计模式,因此只有前端而没有后端内容的话,我们的Web应用是不完整的。因此我们先搭建一个简易的后端,才能进行接下来的内容。

项目初始化

我们的后端使用Nodejs进行开发,因为它和前端一样使用node环境,不需要再使用其他语言,对于主攻前端开发的同学已经足够了。在后端框架的选择上,我们使用Express来进行开发。

使用npm init创建一个新的项目,然后使用npm install express即可。

后端基本功能

后端最基本的功能就是提供一个接口。比如我想要通过访问server/test接收一个测试用的test字符串,就可以让前端get这个地址的时候发送一个test字符串。现在来看看实现这个功能的最小代码。

// 引入express模块
const express = require('express');
// 创建一个express应用,express函数是模块导出的最顶层函数
const app = express();
const port = 3000;

//设定当app的特定路径被使用get方法时的操作,req和res分别代表请求体request和响应体response
app.get('/test',(req, res)=>{
    res.send('test');
})

// 开始监听端口,也就是开启后端
app.listen(port,()=>{
    console.log(`app is listening on localhost:${port}`);
})

当我们运行index.js后,输入localhost:3000/test,就可以看到屏幕上出现的test字符串了。

query传参

上面是一个最基本的例子。不过我们在使用环境中的链接中一般都没有这么单纯的链接。比如https://juejin.cn/creator/content/article/essays?status=all这个链接中是带参数的,status=all就规定了一个参数,也就是query参数,这种参数一般在get命令中使用,而且是明文的,因此可以传一些不需要隐藏的内容。

query传入的参数都会在req.query中被拦截,因此只需要获取对应的参数就好。

app.get('/test',(req, res)=>{
    res.send(`${req.query.username}`);
})

运行后访问localhost:3000/test?username=1,就可以看到被传入的参数了。

post指令与body传参

HTTP不光有get指令,还有PUT、POST等指令。当我们需要修改后端数据货转传入很长的参数的时候,get指令就显得有点不太合适了。这个时候我们需要使用post或者put指令。

这就涉及到一个问题:这二者的区别是什么?两者都用于创建新的资源或者修改资源,而PUT存在幂等性,即你调用同一个请求两次不会导致创建两份同样的资源,而POST请求则会有这样的副作用,但是在一般的环境中POST的适用范围比PUT要多。

我们先模拟一个注册请求:用户输入了usernamepassword,然后会向server/register接口发送PUT请求,后端收到了请求以及这两个参数,就会把注册的用户名发送出去。

但是express本身是不能解析body的,因此我们需要一个包body-parser来解析body里面的内容。其作为一个插件挂载到app上,就可以使用对应的功能了。在这个系列中,我们一般用的都是JSON,因此只需要能够使用JSON就可以了。

const express = require('express');
const bodyParser = require('body-parser');
const app = express();
const port = 3000;

app.use(bodyParser.json());

app.post('/register',(req, res)=>{
    const username = req.body.username;
    res.send(`welcome,${username}`);
})

这就又涉及到了一个问题:我们想测试GET命令,只需要访问对应的链接即可。但是POST命令我们应该如何去测试呢?这里给大家推荐一个工具网站:Postman和Apifox,都可以模拟各种各样的HTTP请求。这里就使用Apifox啦,因为界面是中文的。测试一下发现是可以正常工作的。