// do something
};
// get请求
function get(req, res) {
var reqUrl = url.parse(req.url);
if (typeof getHandler[reqUrl.pathname] === "function") {
getHandler[reqUrl.pathname](req, res);
} else {
getHandler["/404"](req, res);
}
}
// post请求(示例)
function post(req, res) {
var reqUrl = url.parse(req.url);
if (typeof postHandler[reqUrl.pathname] === "function") {
var postData = "";
req.on('data', (data) => {
postData += data;
});
req.on('end', () => {
postData = querystring.parse(postData);
postHandler[reqUrl.pathname](res, postData);
});
} else {
getHandler["/404"](req, res);
}
}
// 提供给其他模块使用的接口
module.exports = {
get: get,
post: post
};
最后,讲一下post方法的处理过程,虽然本项目中没有使用到post。post方法跟get方法最主要的不同之处在于post方法除了发送http头部信息之外还带有客户端提交的数据。在接收到post请求的时候,需要将数据读取出来,读取数据的方式也挺简单,只要给request设置监听器就行了。当request对象收到数据的时候会触发“data”事件,因此,给这个事件设置监听器,让它收到数据的时候就把数据保存起来。在接收完一个请求全部的post数据之后会触发“end”事件,因此,给这个事件设置监听器,使得在接收完全部数据之后才开始对提交的数据进行相关的操作。
编写数据模型
先拿主页来讲吧。通过前面的截图,我们可以知道,主页上的数据包括展示菜品的图片、名称、价格,另外需要根据不同的菜品跳转到对应的详情页,因此还需要一个id来用作标识符。最后,可以得到如下的数据模型(下面的模型我使用json描述,你也可以采取其他办法)。这个数据模型描述了主页的数据模型,即首页有很多个食品foods,用数组表示,每个数据元素代表一个食品。每个食品包括四项信息,id,image,name,price。id的值是一个数字,作为唯一标识符。image是一个字符串,用来指明图片地址。name的值是字符串,表示食品的名字,price的值是一个字符串,表示食品的价格。
{
"foods": [{
"id": "number",
"image": "string",
"name": "string",
"price": "string"
}]}设计好数据模型的目的是方便我们设计伪数据,也方便我们对数据进行操作,一般在开始编程之前要做的事情就是设计好数据模型(数据结构),这样写程序时候才会更加顺利,很多接口才能规范下来。虽然我这里把model这一步放在了最后,但我这里model里面只是写了数据访问模块,不代表数据模型是最后才设计的,只是因为我这里讲解的思路是自定向下,刚好讲到model就顺带提一提数据模型设计。









