一、准备工作

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. MySQL 事务与锁机制

    下表展示了本人安装的MariaDB(10.1.19,MySQL的分支)所支持的所有存储引擎概况,其中支持事务的有InnoDB.SEQUENCE,另外InnoDB还支持XA事务,MyISAM不支持事务. ...

  2. SQL*Plus快速入门

    连接数据库sqlplus hr@\"//mymachine.mydomain:port/MYDB\" --连接到MYDB数据库的一个HR数据集里sqlplus hr@MYDB -- ...

  3. [Git]01 如何安装和配置

     简单地说,Git 究竟是怎样的一个系统呢? 请注意,接下来的内容非常重要,若是理解了 Git 的思想和基本工作原理,用起来就会知其所以然,游刃有余.在开始学习 Git 的时候,请不要尝试把各种概 ...

  4. MySQL性能优化之参数配置

    1.目的: 通过根据服务器目前状况,修改Mysql的系统参数,达到合理利用服务器现有资源,最大合理的提高MySQL性能. 2.服务器参数: 32G内存.4个CPU,每个CPU 8核. 3.MySQL目 ...

  5. 关于Canvas Rect Transform 设置问题?

    Render Mode: Screen Space - Overlay:将UI放置在场景的上面,调节场景大小或调整分辨率,则Canvas也会随之调整. Screen Space - Camera:Ca ...

  6. add,update,list.jsp源码

    add:<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncod ...

  7. Transform java future into completable future 【将 future 转成 completable future】

    Future is introduced in JDK 1.5 by Doug Lea to represent "the result of an asynchronous computa ...

  8. 基于ABP框架的权限设置

    需求:在界面展示中,"定向包管理","竞价管理","竞拍管理","发布定向资源","添加竞价资源", ...

  9. Linux 下按时间顺序批量删除文件

    ls -lrt| awk '{print $9}'| head -n 10 | xargs rm -rf 1.文件按时间排序: 2.获取文件名字: 3.取前10个文件 4.删除文件

  10. JVM方法调用

    当我们站在JVM实现的角度去看方法调用的时候,我们自然会想到一种分类: 1.编译代码的时候就知道是哪个方法,永远不会产生歧义,例如静态方法,private方法,构造方法,super方法. 2.运行时才 ...