nodejs实战:使用原生nodeJs模块实现静态文件及REST请求解析及响应(基于nodejs6.2.0版本,不使用express等webMVC框架 )
一、准备工作
1、安装nodejs
首先你需要安装nodeJs
那么nodejs官网:http://nodejs.cn/,下载相应版本,一步一步安装。
二、使用nodejs开发服务器后台应用
1、创建nodejs应用
直接上代码
var http = require('http'); var fs = require('fs'); var url = require('url'); var path = require('path'); var queryString = require('querystring'); //解析REST请求 function parseReq(response, pathName, queryStr) { //解析请求参数 var reqStr = queryString.parse(queryStr); switch (pathName) { //简单实例,解析请求参数获取用户名并通过json数据返回 case "/dojoTest/getUser": response.writeHead(200, { 'Content-Type': 'application/json;charset=utf-8' }); var str = "{'errNum': 200,'retMsg': '请求成功','data':' 用户名是:" + reqStr.user + "'}"; response.write(str); break; //简单实例:通过REST请求方式获取当前时间 case "/dojoTest/getTime": response.writeHead(200, { 'Content-Type': 'application/json;charset=utf-8' }); response.write("{'errNum': 200,'retMsg': '请求成功','data':' 当前时间:" + new Date().toLocaleString() + "'}"); break; //如果没有对应的REST请求,报个501错误给浏览器 default: response.writeHead(501, { 'Content-Type': 'application/json;charset=utf-8' }); response.write('{"errNum": 501,"retMsg":"请求失败:该请求不存在","data":"null"}'); } response.end(); }; //解析静态请求 function staticFileReq(response, pathName, suffixStr) { //读取静态文件并生成流 fs.readFile(pathName.substr(1), function(err, data) { if (err) { console.log(err); //HTTP 404 :页面不存在 //没找到对应的静态文件怎么办,给个404错误 response.writeHead(404, { 'Content-Type': 'text/html;charset=utf-8' }); //响应文件流 response.write("页面不存在!404"); response.end(); } else { //HTTP 200 : 成功 if (suffixStr === ".css") { //设置charset=utf-8防止乱码 response.writeHead(200, { 'Content-Type': 'text/css;charset=utf-8' }); } else { response.writeHead(200, { 'Content-Type': 'text/html;charset=utf-8' }); } //响应文件流 response.write(data.toString()); response.end(); } }); } //创建服务器 http.createServer(function(request, response) { //获取请求地址 var requrl = request.url; var urlparse = url.parse(requrl); //请求路径 var pathname = urlparse.pathname; //pathname+参数 // var urlpath = urlparse.path; //参数 var query = urlparse.query; //同上,但参数前多个? // var search = urlparse.search; //后缀 var suffix = path.extname(pathname); //控制台显示信息 // console.log("Request for " + pathname + " received,path is " + urlpath + ",query is" + query + ",search is" + search); console.log("Request for " + pathname + "received,suffix is " + suffix + ",query is " + query); if (suffix != null && suffix.trim() != "") { //静态文件处理 staticFileReq(response, pathname, suffix); } else { //动态请求处理 parseReq(response, pathname, query); } //响应结束 }).listen(8081); //开启后在控制台显示该服务正在运行 console.log('Server running at http://127.0.0.1:8081/');
2、运行编写好的应用
3、从浏览器端发送请求和浏览页面
浏览器发送请求
nodejs实战:使用原生nodeJs模块实现静态文件及REST请求解析及响应(基于nodejs6.2.0版本,不使用express等webMVC框架 )的更多相关文章
- nodeJS实战:自定义模块与引入,不同模块的函数传递及回调处理,exports与module.exports(基于nodejs6.2.0)
前言:本文基于上一篇文章中的源代码进行改写,地址:http://blog.csdn.net/eguid_1/article/details/52182386 注意:为什么不用module.export ...
- iis重写模块实现程序自动二级域名,微软提供的URL重写2.0版本适用IIS以上
在iis7以后微软提供了url重写2.0版本,可以通过安装重写组件来实现.适用于iis7以上版本. 安装有两种方式可以选择,一是下载安装文件,二是通过“web平台安装程序”安装 1.下载安装文件 下载 ...
- django中url,静态文件,POST请求的配置 分类: Python 2015-06-01 17:00 789人阅读 评论(0) 收藏
平时使用的是pycharm,所以这篇文章主要也是使用pycharm默认创建的django项目为基础进行讲解.项目目录如下图: 1.URL的配置 当创建好项目后,运行项目就可以看到django默认的页面 ...
- django之三剑客、静态文件配置、请求响应对象、数据库操作
三剑客 from django.shortcuts import render,HttpResponse,redirect HttpResponse # 返回字符串 render(response, ...
- .Net Core 中间件之静态文件(StaticFiles)源码解析
一.介绍 在介绍静态文件中间件之前,先介绍 ContentRoot和WebRoot概念. ContentRoot:指web的项目的文件夹,包括bin和webroot文件夹. WebRoot:一般指Co ...
- 基于Python原生asyncio模块对DNS正向和反向的解析
一.正向解析:域名解析IP地址 import asyncio import socket domains = [ ('www.baidu.com', 'https'), ('cn.bing.com', ...
- NW.js安装原生node模块node-printer控制打印机
1.安装原生node模块 #全局安装nw-gyp npm install -g nw-gyp #设置目标NW.js版本 set npm_config_target=0.31.4 #设置构建架构,ia3 ...
- nginx实现动态/静态文件缓存(week4_day1_part2)-技术流ken
nginx实现静态文件缓存实战 1.nginx静态文件缓存 如果要熟练使用nginx来实现文件的缓存,那下面的几个指令你必须要牢记于心 指令1:proxy_cache_path 作用:设置缓存数据的相 ...
- Express static 托管静态文件 理解
今天偶尔看了一下服务端渲染,遇到了express.static, 在以前学习webpack配置服务端渲染时,也使用express.static 中间件,两者配置不太一样,由于当时也没有认真学,所以 一 ...
随机推荐
- Java匿名内部类使用与示例
首先说为什么有匿名类 两个原因(产生的使命) 1.简化代码编写 某种情况下,类只需要扩展一个方法,没必要为了一个方法单独去写一个子类,然后然后调用子类,此时需要匿名类 2.在不同的包内的类内调用类的p ...
- windows和linux双系统修改启动项
在windows系统的基础上再装linux系统的时候,电脑启动就会出现linux的启动引导项,默认的是进入linux.要使电脑默认进入windows只需要修改linux系统的启动引导文件(grub.c ...
- [angularjs] MVC + Web API + AngularJs 搭建简单的 CURD 框架
MVC + Web API + AngularJs 搭建简单的 CURD 框架 GitHub 地址:https://github.com/liqingwen2015/Wen.MvcSinglePage ...
- API 管理工具
API 管理工具 你还苦于无法有效的管理大量的API吗?今天给大家介绍一款API的管理工具.这款工具可以免费使用,虽然中途可能会提示你购买,但并不影响我们的使用. 下载地址: Windows:http ...
- Linux学习之竿头直上
今天第二讲昨天我们讲解了10基础命令,今早上我继续为大家讲解10个linux常见命令 今天主要讲解与网络相关的命令和软件安装的命名 NetworkManager 与rpm 在windows中我们查看网 ...
- String属于“假引用类型”,代码为证(一个String引发的血案...)
一直以为String是引用类型,今天写了个浅拷贝的测试,发现String有基本类型的特征. class A{ public int a = 555; } class User implements C ...
- jquery按钮绑定特殊事件
本文主要介绍点击一个按钮处理事件的一些特殊情况和技巧. 一.第一次点击触发一个函数,之后点击都触发另一个函数 1.小白实现 2.大神实现 代码如下: <body> <button&g ...
- 一个栗子上手CSS3动画
最近杂七杂八的事情很多,很多知识都没来得及总结,是时候总结总结,开启新的篇章- 本篇文章不一一列举CSS3动画的属性,若需要了解API,可前往MDN 在开始栗子前,我们先补补基础知识. css3动画分 ...
- ④JavaScript格式化时间戳
这部分代码是按照网上的教程写的,忘记在哪里看到了
- poj1743 Musical Theme 后缀数组的应用(求最长不重叠重复子串)
题目链接:http://poj.org/problem?id=1743 题目理解起来比较有困难,其实就是求最长有N(1 <= N <=20000)个音符的序列来表示一首乐曲,每个音符都是1 ...