这一章节我们将从初学者的角度介绍如何建立一个简单的node.js HTTP 服务器

创建myFirstHTTPServer.js

//Lets require/import the HTTP module
var http = require('http');//Lets define a port we want to listen to
const PORT=8080; //We need a function which handles requests and send response
function handleRequest(request, response){response.end('It Works!! Path Hit: ' + request.url);
}//Create a server
var server = http.createServer(handleRequest);//Lets start our server
server.listen(PORT, function(){//Callback triggered when server is successfully listening. Hurray!console.log("Server listening on: http://localhost:%s", PORT);
});

使用node 运行文件

> node myFirstHTTPServer.js#output
Server listening on: http://localhost:8080

上述已经在浏览器上打开了 http://localhost:8080   

  

分析:

//Lets require/import the HTTP module
var http = require('http');

node.js有用于穿件http/https 的 核心模块,因此我们只需引入http模块就可创建一个HTTP 服务器

//We need a function which handles requests and send response
function handleRequest(request, response){response.end('It Works!! Path Hit: ' + request.url);
}

我们需要一个用来处理所有请求和响应的函数

上述代码是你服务器项目的入口点(即 你可以根据你的业务逻辑来响应请求)

//Create a server
var server = http.createServer(handleRequest);//Lets start our server
server.listen(PORT, function(){//Callback triggered when server is successfully listening. Hurray!console.log("Server listening on: http://localhost:%s", PORT);
});

上述,创建了一个吸金的HTTP服务器对象,并要求其监听一个端口

createServer方法用来创建一个新的服务器实例并且使用监听函数作为参数

然后,我们即可调用监听在服务器上的函数来启动服务器

上述是基本的HTTP服务器运行

现在我们添加一些实际需求

对于不同的URL路径,你的服务器应该有不同的响应

这意味着我们需要一个dispatcher

dispatcher是一种路由(router),在针对不同的指定URL路径时,你可用其来调用你想调用的请求处理函数代码。

第一:安装dispatcher 模块

有很多不同的模块,针对演示例子,我们安装了基本的模块

> npm install httpdispatcher

注意:nmp是一个包管理器,其提供了针对js和nodeJs的核心开源模块。我们使用 ‘npm install ’命令就可安装所有所需的模块

下面,使用dispatcher模块

var dispatcher = require('httpdispatcher');

接着,让dispatcher在监听函数中运行

//Lets use our dispatcher
function handleRequest(request, response){try {//log the request on console
        console.log(request.url);//Disptach
        dispatcher.dispatch(request, response);} catch(err) {console.log(err);}
}

让我们定义一些路由

路由定义了当浏览器请求一个特地的URL时,服务器应该做什么

//For all your static (js/css/images/etc.) set the directory name (relative path).
dispatcher.setStatic('resources');//A sample GET request
dispatcher.onGet("/page1", function(req, res) {res.writeHead(200, {'Content-Type': 'text/plain'});res.end('Page One');
});    //A sample POST request
dispatcher.onPost("/post1", function(req, res) {res.writeHead(200, {'Content-Type': 'text/plain'});res.end('Got Post Data');
});

现在让我们尝试不同的地址:

  • GET /page1 => 'Page One'
  • POST /page2 => 'Page Two'
  • GET /page3 => 404
  • GET /resources/images-that-exists.png => Image resource
  • GET /resources/images-that-does-not-exists.png => 404

 你可通过在浏览器地址栏输入URL来进行一个get请求。针对Post请求,你可使用Postman工具

ok!你现在已经可以建立一个简单的HTTP服务器并且使之运行了!

上述我们创建了一个基本的HTTP服务器,其创建是通过使用 http模块和 一个简单的dispatcher模块 来实现的, displatcher是用来分配(dispatch)http请求到合适的路由上。

  

转载于:https://www.cnblogs.com/RachelChen/p/6604369.html

在node.js中建立你的第一个HTTp服务器相关推荐

  1. ENSP如何开启服务器的http_如何使用HTTP模块在Node.js中创建Web服务器(上)

    当你在浏览器中查看网页时,其实是在向互联网上的另一台计算机发出请求,然后它会将网页提供给你作为响应.你通过互联网与之交谈的那台计算机就是Web服务器,Web服务器从客户端(例如你的浏览器)接收HTTP ...

  2. c语言socket句柄函数传递,通过源码解析 Node.js 中进程间通信中的 socket 句柄传递...

    在 Node.js 中,当我们使用 child_process 模块创建子进程后,会返回一个 ChildProcess 类的实例,通过调用 ChildProcess#send(message[, se ...

  3. Day 27: Restify —— 在Node.js中构建正确的REST Web服务

    今天决定学一个叫做restify的Node.js模块.restify模块使得在Node.js中写正确的REST API变得容易了很多,而且它还提供了即装即用的支持,如版本控制.错误处理.CORS和内容 ...

  4. 使用Express在Node.js中实现非常基本的路由

    by Pau Pavón 通过保罗·帕文(PauPavón) 使用Express在Node.js中实现非常基本的路由 (Really, really basic routing in Node.js ...

  5. node.js中net网络模块TCP服务端与客户端的使用

    node.js中net模块为我们提供了TCP服务器和客户端通信的各种接口. 一.创建服务器并监听端口 const net = require('net');//创建一个tcp服务 //参数一表示创建服 ...

  6. Node.js中的child_process模块详解

    本文主要给大家介绍了关于Node.js中child_process模块的相关内容,在介绍child_process模块之前,先来看一个例子. const http = require('http'); ...

  7. 消息队列Rabbitmq,在Node.js中的应用

    为什么写这篇文章 现在的面试要求越来越高了,打开看了看几个 BOSS 招聘 Node.js 全栈开发的,其中都有一条"了解 消息队列,并在项目中应用过",呜呜呜 后端开发者应该都知 ...

  8. 深入理解 Node.js 中的 Worker 线程

    多年以来,Node.js 都不是实现高 CPU 密集型应用的最佳选择,这主要就是因为 JavaScript 的单线程.作为对此问题的解决方案,Node.js v10.5.0 通过 worker_thr ...

  9. 模块加载及第三方包:Node.js模块化开发、系统模块、第三方模块、package.json文件、Node.js中模块的加载机制、开发环境与生产环境、cookie与session

    1.Node.js模块化开发 1.1 JavaScript开发弊端 JavaScript 在使用时存在两大问题,文件依赖和命名冲突. 1.2 软件中的模块化开发 一个功能就是一个模块,多个模块可以组成 ...

最新文章

  1. Linux 下 hosts 应用
  2. 编程之美-控制CPU占用率曲线方法整理
  3. linux脚本实现scp命令自动输入密码和yes/no等确认信息
  4. Integer 中的缓存类IntegerCache
  5. fzu 1894 单调队列
  6. Windows 7 资源管理器搜索Channel 9 视频
  7. 行政地名、行政区划名、地名分类(矢量数据)
  8. 拒绝访问,文件或目录损坏且无法读取解决办法
  9. PrintWriter out= response.getWriter()失效无法在前端弹出提示框以及乱码问题.
  10. 校园服务微信小程序-跑腿代购,失物招领,二手商城
  11. 定义一个交通工具(Vehicle)的类
  12. python把一个文件夹内子文件夹下所有文件复制到指定目录下
  13. 单细胞转录组文章复现系列(一)——seurat
  14. HCIE华为面试-BGP负载分担
  15. 北京新生儿医保办理指南
  16. 高质量PPT模板网站
  17. DeFi发币潮:大户秀起操作,真没散户什么事?
  18. 【Python】pandas的describe参数详解
  19. 【总结】1165- 前端团队代码规范最佳实践,个人成长必备!
  20. 贪心(Ball,HDU 5821)

热门文章

  1. Sublime package control错误:There are no packages available for installation
  2. 10字符串及整数操作符
  3. git如何强制用远程分支更新本地
  4. ABP框架详解(三)Domain
  5. 一、认识Python
  6. [SOJ] 畅通工程续
  7. Linux命令学习笔记之一目录与文件基本操作
  8. nagios报错汇总
  9. JavaScript--在页面的下拉框控件中遍历出日期--先天下能力工场
  10. 网站排障分析常用的命令