一、准备工作

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框架 )的更多相关文章

  1. nodeJS实战:自定义模块与引入,不同模块的函数传递及回调处理,exports与module.exports(基于nodejs6.2.0)

    前言:本文基于上一篇文章中的源代码进行改写,地址:http://blog.csdn.net/eguid_1/article/details/52182386 注意:为什么不用module.export ...

  2. iis重写模块实现程序自动二级域名,微软提供的URL重写2.0版本适用IIS以上

    在iis7以后微软提供了url重写2.0版本,可以通过安装重写组件来实现.适用于iis7以上版本. 安装有两种方式可以选择,一是下载安装文件,二是通过“web平台安装程序”安装 1.下载安装文件 下载 ...

  3. django中url,静态文件,POST请求的配置 分类: Python 2015-06-01 17:00 789人阅读 评论(0) 收藏

    平时使用的是pycharm,所以这篇文章主要也是使用pycharm默认创建的django项目为基础进行讲解.项目目录如下图: 1.URL的配置 当创建好项目后,运行项目就可以看到django默认的页面 ...

  4. django之三剑客、静态文件配置、请求响应对象、数据库操作

    三剑客 from django.shortcuts import render,HttpResponse,redirect HttpResponse # 返回字符串 render(response, ...

  5. .Net Core 中间件之静态文件(StaticFiles)源码解析

    一.介绍 在介绍静态文件中间件之前,先介绍 ContentRoot和WebRoot概念. ContentRoot:指web的项目的文件夹,包括bin和webroot文件夹. WebRoot:一般指Co ...

  6. 基于Python原生asyncio模块对DNS正向和反向的解析

    一.正向解析:域名解析IP地址 import asyncio import socket domains = [ ('www.baidu.com', 'https'), ('cn.bing.com', ...

  7. NW.js安装原生node模块node-printer控制打印机

    1.安装原生node模块 #全局安装nw-gyp npm install -g nw-gyp #设置目标NW.js版本 set npm_config_target=0.31.4 #设置构建架构,ia3 ...

  8. nginx实现动态/静态文件缓存(week4_day1_part2)-技术流ken

    nginx实现静态文件缓存实战 1.nginx静态文件缓存 如果要熟练使用nginx来实现文件的缓存,那下面的几个指令你必须要牢记于心 指令1:proxy_cache_path 作用:设置缓存数据的相 ...

  9. Express static 托管静态文件 理解

    今天偶尔看了一下服务端渲染,遇到了express.static, 在以前学习webpack配置服务端渲染时,也使用express.static 中间件,两者配置不太一样,由于当时也没有认真学,所以 一 ...

随机推荐

  1. oracle 归档日志满 报错ORA-00257: archiver error. Connect internal only, until freed

    归档日志满导致无法用户无法登陆 具体处理办法 --用户登陆 Microsoft Windows [Version 6.1.7601] Copyright (c) Microsoft Corporati ...

  2. 03(3) 基于GMM-HMM的SR基础

    1.GMM-HMM的训练 1)训练GSM-HMM (1)确定HMM拓扑结构 (2)初始化HMM模型参数 (3)在所有的utterances中计算所需的统计量 (4)使用公式更新模型参数 (5)不收敛, ...

  3. JS模式--装饰者模式(用AOP动态改变函数的参数)

    Function.prototype.before = function (beforefn) { var _self = this; return function () { beforefn.ap ...

  4. 【2017-04--28】Winform中ListView控件

    ListView 1.先设置列,设置视图属性选择Details. 添加列,修改列名. 2.编辑项(添加行数据) 添加一个ListViewItem对象,该对象的Text对应着是第一列的数据, 在该对象的 ...

  5. 【算法系列学习】Dijkstra求最短路 [kuangbin带你飞]专题四 最短路练习 D - Silver Cow Party

    https://vjudge.net/contest/66569#problem/D trick:1~N各点到X可以通过转置变为X到1~N各点 #include<iostream> #in ...

  6. Android获取状态栏高度、标题栏高度、编辑区域高度

    一.Activity界面的划分 简单说明一下(上图Activity采用默认Style,状态栏和标题栏都会显示):最大的草绿色区域是屏幕界面,红色次大区域我们称之为"应用程序界面区域" ...

  7. UI基础控件—UIView

    1. 什么是UIView?     UIView :代表屏幕上的一个矩形区域,管理界面上的内容; 2. 创建UIview a.开辟空间并初始化视图(初始化时,给出视图位置和大小) b.对视图做一些设置 ...

  8. Centos6.5静默安装Oracle11g

    sed -i "s/SELINUX=enforcing/SELINUX=disabled/" /etc/selinux/configsetenforce 0yum -y insta ...

  9. Python dict 按键和值排序

    python 字典(dict)的特点就是无序的,按照键(key)来提取相应值(value),如果我们需要字典按值排序的话,那可以用下面的方法来进行:1 下面的是按照value的值从大到小的顺序来排序. ...

  10. hdu3336 Count the string kmp+dp

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3336 很容易想到用kmp 这里是next数组的应用 定义dp[i]表示以s[i]结尾的前缀的总数 那么 ...