index.js 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. var http = require('http');
  2. var fs = require('fs');
  3. var path = require('path');
  4. var url = require('url');
  5. var querystring = require('querystring');
  6. var server = http.createServer();
  7. var Mock = require('mockjs');
  8. var util = require('util');
  9. // 监听客服端请求
  10. server.on('request',function (req,res) {
  11. //console.log(req.url + req.method);
  12. if (req.url.indexOf('/mock') === 0 && req.method === 'POST') {
  13. var postData = '';
  14. // 18. 给req对象注册一个接收数据的事件
  15. req.on('data',function (chuck) {
  16. /**data事件详解
  17. * 浏览器每发送一次数据包(chuck),该函数会调用一次。
  18. * 该函数会调用多次,调用的次数是由数据和网速限制的
  19. */
  20. // 19. 每次发送的都数据都叠加到postData里面
  21. postData += chuck;
  22. })
  23. // 20. 到post请求数据发完了之后会执行一个end事件,这个事件只执行一次
  24. req.on('end', function () {
  25. // 21. 此时服务器成功接受了本次post请求的参数
  26. // post请求最终获取到的数据就是url协议组成结构中的query部分
  27. //console.log(postData);
  28. // 22. 使用querystring模块来解析post请求
  29. /**
  30. * querystring详解
  31. * 参数:要解析的字符串
  32. * 返回值:解析之后的对象。
  33. */
  34. var postObjc = querystring.parse(postData);
  35. // 23. 打印出post请求参数,
  36. //console.log(postObjc.template);
  37. var data ;
  38. try{
  39. data = JSON.stringify( Mock.mock(JSON.parse(postObjc.template)) );
  40. }catch(e){
  41. data = '为了服务器安全,只允许符合json语法的字符串'
  42. }
  43. res.end(data);
  44. })
  45. }
  46. })
  47. // n. 启用服务器
  48. server.listen(7123,function () { console.log('mock服务启用成功'); })