1.服务路由
我们需要写项目的一些路由,就是请求的api:
接下来我们需要将这个方法引入创建服务的时候:
如果我们可以拿到返回的数据blogData,那么整个请求就可以结束了,并返回字符串json数据,如上图所示;
2.在页面直接访问api
现在我们其实基本的GET接口已经写好了,要点就是:
1)为了工程化,把所有api都放在routes文件中方便处理;
2)传入req的属性method进行方法的判断,后期可以处理更加复杂的逻辑,然后返回相应我(json字符串)
3)现在我们其实可以直接访问现有的GET方法了:
接口已经调通了。
3.如果访问的url并没有声明
如果我们访问的api没有在路由文件中声明那么我们就在浏览器上声明404,数据格式是text,这也是后台处理的常用方法,我们来设置一下返回头和返回数据,res.writeHead、res.write这两个方法提供给我们去设置res,由res.end去结束请求,代码和请求如下:
4.GET请求
如果放一个带有参数的get请求,我们应该怎么做:
1)处理req发送带来的请求
http://localhost:8080/api/list?garde=1
我们带了一个garde参数,查询年级是1的数据,使用querystring去解析?后面参数数据:
const queryString = require('querystring');
req.query = queryString.parse(url.split('?')[1]);
2)接口数据处理
理论上我们接收到req的入参应该去查询数据库,现在我们先写死数据,
const { SuccessModal } = require('../modal/resModal');
const { getList } = require('../utils');
// 处理路由
const handleRoutes = (req, res) => {
const method = req.method;
if (method === 'GET' && req.url === '/api/list') {
const grade = req.query.grade;
// 可以使用入参去做一些业务上的处理查询等操作
const data = getList(grade);
return new SuccessModal(data);
}
}
①getList函数就是数据的处理,我们把这个函数放在工具类里面:
const getList = (data) => {
console.log(data);
// 理论上应该从数据库查询数据,暂时写死假数据
return [
{
garde: 1,
teacher: 'Lee',
students: 20
},
{
garde: 1,
teacher: 'Wang',
students: 34
}
]
}
module.exports = {
getList
}
②还有个成功的模型,如下所示:
class basicModal {
constructor(data, message) {
if (typeof data === 'string') {
this.message = data;
data = null;
message = null;
}
if (data) {
this.data = data
}
if (message) {
this.message = message
}
}
}
// 成功模型
class SuccessModal extends basicModal {
constructor (data, message) {
super(data, message);
this.status = 200;
}
}
当有数据返回,调用成功的模型,因为成功的模型会继承基本模型,基本模型中又会把data设为this.data,并返回status 是200
然后在入口文件中res.end打印,和之前写的代码一样的:
关于数据就是getList方法中直接返回的json数据。
到这里我们学习了get请求的基本处理方式,上面代码像基本模型还是很值得学习写法的,下一章我们自己去写一下POST方法。