1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253 |
- var http = require('http');
- var fs = require('fs');
- var path = require('path');
- var url = require('url');
- var querystring = require('querystring');
- var server = http.createServer();
- var Mock = require('mockjs');
- var util = require('util');
- // 监听客服端请求
- server.on('request',function (req,res) {
- //console.log(req.url + req.method);
- if (req.url.indexOf('/mock') === 0 && req.method === 'POST') {
- var postData = '';
- // 18. 给req对象注册一个接收数据的事件
- req.on('data',function (chuck) {
- /**data事件详解
- * 浏览器每发送一次数据包(chuck),该函数会调用一次。
- * 该函数会调用多次,调用的次数是由数据和网速限制的
- */
- // 19. 每次发送的都数据都叠加到postData里面
- postData += chuck;
- })
- // 20. 到post请求数据发完了之后会执行一个end事件,这个事件只执行一次
- req.on('end', function () {
- // 21. 此时服务器成功接受了本次post请求的参数
- // post请求最终获取到的数据就是url协议组成结构中的query部分
- //console.log(postData);
- // 22. 使用querystring模块来解析post请求
- /**
- * querystring详解
- * 参数:要解析的字符串
- * 返回值:解析之后的对象。
- */
- var postObjc = querystring.parse(postData);
- // 23. 打印出post请求参数,
- //console.log(postObjc.template);
- var data ;
- try{
- data = JSON.stringify( Mock.mock(JSON.parse(postObjc.template)) );
- }catch(e){
- data = '为了服务器安全,只允许符合json语法的字符串'
- }
- res.end(data);
- })
- }
- })
- // n. 启用服务器
- server.listen(7123,function () { console.log('mock服务启用成功'); })
|