node.js-------使用路由模块

路由需要的信息,包括URL 及GET 或 POST参数。路由根据这些参数执行相应的js处理程序,因此,需要在HTTP请求中提取出URL以及GET或POST参数。这些请求参数在request对象中,这个对象是onRequest()回调函数的第一个参数。需要提取这些信息,需要Node.js的模块,url和querystring模块。

                url.parse(string).query

                         |

     url.parse(string).pathname    |

              |           |  

 http://localhost:8888/start?foo=bar&hello=world                                  

    querystring(string)["foo"]

                querystring(string)["hello"]

 

当然可以用querystring模块来解释POST请求体中的参数。

可以通过不同的请求的URL路径来映射到不同的处理程序上面,路由就是做这一个工作。

例如来自:/start和/upload的请求可以使用不同的程序来处理。

 

下面是一个例子:

---index.js

---server.js

---route.js

 

编写一个路由,route.js

function route(pathname){console.log("About to route a request for "  +  pathname);
}
exports.route = route;

 编写处理请求的页面,server.js

var http = require("http");
var url = require('url');function start(route){function onRequest(request, response){var pathname = url.parse(request.url).pathname;console.log("Request for " + pathname + "received");route(pathname);//在这里可以对不同的路径进行处理//if(pathname =="...") response.writeHead不同的信息之类response.writeHead(200, {"Content-Type" : "text/plain"});response.write("Hello World");response.end();}http.createServer(onRequest).listen(3000);console.log("Server has started.");
}
exports.start = start;

编写启动文件,index.js

var server = require("./server");
var router = require("./router");server.start(router.route);

在客户端启动应用,服务器启动,开始监听3000端口:

node index.js

在浏览器端输入一个请求URL:

http://127.0.0.1:3000/

看到相应的客户端输出:

 浏览器显示:

 

转载于:https://www.cnblogs.com/IanI/p/3990210.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/259906.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Docker - 在CentOS 7中安装Docker

在CentOS 7中安装Docker 1-确认系统信息 # cat /etc/redhat-release CentOS Linux release 7.2.1511 (Core) # uname -a Linux CentOS-7 3.10.0-327.el7.x86_64 #1 SMP Thu Nov 19 22:10:57 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux 2-安装docker # yum -y install docker 3…

HDU 1715 大菲波数 (大数问题)

/* 复习大数问题&#xff1b; */ #include <iostream> #include <cstdlib> #include <cstdio> #include <cstring> #include <algorithm> #include <cmath> #include <string> #include <iomanip> using namespace std;int nu…

springcloud 相同服务名_SpringCloud系列之SpringCloud Stream

SpringCloud Stream技术兴起的原因&#xff1a;为了解决系统中不同中间件的适配问题&#xff0c;出现了cloud stream&#xff0c;采用适配绑定的方式&#xff0c;自动给不同的MQ之间进行切换。屏蔽底层消息中间件的差异&#xff0c;降低切换成本&#xff0c;统一消息的编程模型…

计算机意外重启或遇错误无法继续,计算机意外地重新启动或遇到错误如何解决?...

电脑小白在重装系统后难免会遇到些问题&#xff0c;有的容易处理&#xff0c;有的会有些棘手。那么&#xff0c;计算机意外地重新启动或遇到错误如何解决?今天快启动小编为大家分享详细的计算机意外地重新启动或遇到错误的解决方法&#xff0c;献给对系统重装知识不太了解的小…

jqueryui的Tooltip使用方法

http://api.jqueryui.com/tooltip/#option-position&#xff0c;详细使用方法。 http://jqueryui.com/tooltip/&#xff0c;DEMO。 content使用 $( ".selector" ).tooltip({ content: "Awesome title!" });//div及相关标签使用样式&#xff0c;鼠标放上去时…

iOS 开发者账号共用发布证书 (Distribution)问题

苹果客服回复&#xff1a; 1.第一台申请发布证书的电脑&#xff0c;从钥匙串中导出发布证书(Distribution)颁发的request文件&#xff1f;然后在第二台电脑上用request文件新生成一个Distribution证书&#xff0c;这个是可以共用的&#xff1f;&#xff08;不理解还是理解错了&…

JMeter web 测试

2019独角兽企业重金招聘Python工程师标准>>> JMeter web 测试 http://jmeter.apache.org/usermanual/build-web-test-plan.html 转载于:https://my.oschina.net/276172622/blog/808957

scala 连接oracle_一分钟教你学会用java连接Oracle数据库

package java_jdbc;//java连接Oracle数据库import java.sql.Connection;import java.sql.DriverManager;import java.sql.ResultSet;import java.sql.Statement;public class JdbcOracleTest {public static void main(String[] args) {// TODO Auto-generated method stub//1.…

计算机软件记不住设置,想知道电脑密码记不住了怎么办

635509517回答数&#xff1a;23216 | 被采纳数&#xff1a;32017-01-09 17:51:10方法一&#xff1a;(1)启动电脑&#xff0c;使用DOS启动盘(比如&#xff1a;Windows 98启动盘)进入纯DOS状态。(2)在DOS提示符下&#xff0c;根据下面步骤操作&#xff1a;cd\\ (切换到根目录)c…

vue-cli#2.0 webpack 配置分析

目录结构&#xff1a; ├── README.md ├── build │ ├── build.js │ ├── check-versions.js │ ├── dev-client.js │ ├── dev-server.js │ ├── utils.js │ ├── webpack.base.conf.js │ ├── webpack.dev.conf.js │ └── webpack.prod.conf.js…

initWithNibName与viewDidLoad的执行关系以及顺序

一个ViewController&#xff0c;一般通过init或initWithNibName来加载。二者没有什么不同&#xff0c;init最终还是要调用initWithNibName方法&#xff08;除非这个ViewController没有nib文件&#xff09;。 我们经常在initWithNibName方法中初始化视图&#xff0c;变量或者其他…

120xa正反转参数_你知道变频器的“正反转死区时间”吗?它的“停机方式”有几种?...

若你我之间有缘&#xff0c;关注作者又何妨&#xff1f;两情若是久长时&#xff0c;又岂在朝朝暮暮。大家好&#xff01;我是江郎&#xff0c;一个踏踏实实的维修工。本期我们仍然探讨两个问题&#xff0c;如标题所述&#xff0c;#变频器#“死区时间”和“停机方式”&#xff0…

【转】游戏编程中的人工智能技术--神经网络

原文&#xff1a;http://blog.csdn.net/ecitnet/article/details/1799444 游戏编程中的人工智能技术.>. (连载之一)用平常语言介绍神经网络(Neural Networks in Plain English)因为我们没有很好了解大脑&#xff0c;我们经常试图用最新的技术作为一种模型来解释它。在我童年…

w8计算机配置要求,win8系统最低配置要求有哪些|win8系统是否有最低配置要求-系统城...

2013-10-17 17:08:08  浏览量&#xff1a;5753小编这里要为大家带来的是win8系统最低配置要求和部分安装截图&#xff0c;很多用户想要将自己的电脑装上win8&#xff0c;但也不是每一台电脑都可以安装win8系统的&#xff0c;为了避免一些低配置的用户安装了win8之后却无法运行…

Session 丢失问题

项目从.NET Framework3.5 升级 .NET Framework4.0后&#xff0c;如果用Response.Redirect();进行页面的跳转&#xff0c;服务端会把这个跳转动作当作是一个“新”的用户去访问网页。 而这个时候&#xff0c;会给这个“新”的用户一个SessionID&#xff0c;那造成的结果是&#…

财务管理专业应该报计算机二级哪个科目,我是应该报计算机二级还是三级呢

2008-12-01怎样学好财务管理&#xff1f;“五步”学好财务管理:学习这门课程前&#xff0c;首先就不要认为它“很难”&#xff0c;只要相信“难而不会&#xff0c;会而不难”&#xff0c;充满信心一定就能学好。我在学习过程中总结了几条经验&#xff0c;以供各位学友参考&…

libsvm java 调用说明

libsvm是著名的SVM开源组件&#xff0c;目前有JAVA.C/C,.NET 等多个版本&#xff0c;本人使用的是2.9libsvm命名空间下主要使用类&#xff1a;svm_model 为模型类&#xff0c;通过训练或加载训练好的模型文件获得svm_parameter 为参数类&#xff0c;主要为支持向量机设定参数&a…

java字符串排序_对字符串排序持一种宽容的心态

在Java中一涉及中文处理就会冒出很多问题来&#xff0c;其中排序也是一个让人头疼的课题&#xff0c;我们来看下面的代码&#xff1a;上面的代码定义一个数组&#xff0c;然后进行升序排序&#xff0c;我们期望的结果是按照拼音升序排列&#xff0c;即为李四、王五、张三&#…

rails开发随手记-0

helper默认是只在view中可用的&#xff0c;如果在controller中也要使用&#xff0c;要在ApplicationController中 include 如果model中如果有叫做type的列的话&#xff0c;会触发rails的Single Table Inheritance &#xff0c;放弃它吧&#xff0c;不好用&#xff0c;还是安心使…