Nodejs根据具体请求路径执行具体操作

1.处理请求模块(requestHandlers.js)

function start(){

console.log("Request handler ‘start‘ was called ");

return "Hello start";

}

function upload(){

console.log("Request handler ‘upload‘ was called ");

return "Hello Upload";

}

exports.start = start;

exports.upload = upload;

2.路由模块(route.js)

function route(handle,pathname){

console.log("About to route a request for "+pathname);

if (typeof handle[pathname] == ‘function‘) {

return handle[pathname]();

}else{

console.log("No request handler found for " + pathname);

return "404 Not found";

}

}

exports.route = route;

3.服务器模块(server.js)

var http = require("http");

var url = require("url");

function start(route,handle){

function onRequest(request,response){

var pathname = url.parse(request.url).pathname;

if (pathname != "/favicon.ico") {

console.log("Request for" + pathname + " received");

response.writeHead(200,{"Content-Type":"text/plain"});

var content = route(handle,pathname);

response.write(content);

response.end();

}

}

http.createServer(onRequest).listen(8888);

console.log("Server has started");

}

exports.start = start;

4.调用相应模块(index.js)

var server = require("./server");

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

var requestHandlers = require("./requestHandlers");

var handle = {};

handle["/"] = requestHandlers.start;

handle["/start"] = requestHandlers.start;

handle["/upload"] = requestHandlers.upload;

server.start(router.route,handle);

5.执行index.js

node index.js

访问:http://localhost:8888/start

输出结果:

Hello start

访问:http://localhost:8888/upload

输出结果:

Hello Upload

访问:http://localhost:8888/other

输出结果:

404 Not found

时间: 2024-10-25 09:05:02

Nodejs根据具体请求路径执行具体操作的相关文章

request操作的几个容易混淆的请求路径

假定你的web application 名称为news,你在浏览器中输入请求路径: http://localhost:8080/news/main/list.jsp 则执行下面向行代码后打印出如下结果: 1.System.out.println(request.getContextPath()); 打印结果:/news 2.System.out.println(request.getServletPath()); 打印结果:/main/list.jsp 3.System.out.println(

同 一个页面,不同请求路径,如何根据实际场景写JS

场景:使用同一个“添加群成员”的页面来操作 建群页面:建群成功后,返回查看群成员页面.在建群过程中直接添加群成员并返回一个群名称的参数. 添加群成员页面:在巳有群内添加群成员,添加成功后,返回查看群成员页面. 分析: 使用同一个页面,调两种不同接口,从接口中可以看到,一个包含{groupId},另一个没有 建群的接口为:/chat/vindicate/group 添加群成员的接口为:/chat/vindicate/group/{groupId} 在eclipse中需要做两个页面的渲染工作,其中使

nodejs模仿http请求组件nodegrass简单例子

最近做数据导入,须模拟http请求,调用框架的相应方法进行数据的插入及保存操作. 采用nodejs的nodegrass方法进行相应简单模仿. 1.搭建nodejs环境. 2.执行npm install nodegrass命令. 3.引入模块,var ng= require(nodegrass); 4.下面先看nodegrass底层的get方法的具体实现,代码如下: //Get Method Request //Support HTTP and HTTPS request,and Automati

ajax请求路径正确,可是页面提示404错误。

昨晚项目升级,开发环境.测试环境一切OK,一上线,页面空白.页面console打印404.查看后台日志报如下错误:. Illegal mix of collations (utf8_unicode_ci,IMPLICIT) and (utf8_general_ci,IMPLICIT) for operation '=' 数据库: mysql 可见404不一定是URL的问题哦. 解决问题的办法: 找到与该请求相关的查询语句,我是用 Spring jdbcTemplate做的,找到对应sql所涉及到

详解Ajax请求(四)——多个异步请求的执行顺序

首先提出一个问题:点击页面上一个按钮发送两个ajax请求,其中一个请求会不会等待另一个请求执行完毕之后再执行? 答案是:不会,这两个异步请求会同时发送,至于执行的快与慢,要看响应的数据量的大小及后台逻辑的复杂程度. 从异步请求的执行原理来看,我们知道当一个异步请求发送时,浏览器不会处于锁死.等待的状态,从一个异步请求发送到获取响应结果的期间,浏览器还可以进行其它的操作.这就意味着多个异步请求的执行时并行的. 下面我们还是从一个例子来看一下这个问题. 要求:ajax1从后台请求下拉列表的数据,aj

iOS AFNetWorking中block执行完后再执行其它操作

需求:同时进行两次网络请求,网络请求是异步的,在网络请求成功后进行其它的操作.两个网络请求是这样,一个网络请求中block执行完之后,再进行其它操作,也是一样的原理,只是这时候不需要线程组了,只需要信号量.当然也适用于所有的block. 接下来就说下,在两次异步请求之后要做的操作. 利用线程组和信号量来完成,看代码 - (void)getData { NSString *appIdKey = @"8781e4ef1c73ff20a180d3d7a42a8c04"; NSString*

tomcat对请求路径的匹配过程

1.匹配服务 如果有两个应用,一个应用只能通过80端口访问,另一个应用只能通过8080端口访问,这种情况下,可以分开两个服务,然后分别创建80端口和8080端口的连接器. 2.匹配主机 一个服务下配置一个引擎,一个引擎下可以配置多个主机,通过请求路径的域名匹配主机名称,如果未匹到,则使用默认的主机,默认主机由引擎的属性defaultHost配置. 3.匹配上下文(应用) 一个主机下可以配置多个上下文,通过URI匹配上下文的路径,如果未匹配到,则匹配失败. 4.选用版本 其实一个主机下可以配置相同

(原创)在service中定时执行网络操作的几点说明

执行网络操作是耗时操作,即便是在service中也要放到子线程中执行 这里我用到了async-http-client框架来执行异步请求操作 计时用的java原生Timer和TimerTask类 本来这两者分开操作各没有问题 但是如果把异步操作写到TimerTask的run方法里就会出错 E/AndroidRuntime(5799): java.lang.IllegalArgumentException: Synchronous ResponseHandler used in AsyncHttpC

理解互联网域名请求实现过程,以及Nodejs的http请求小谈

前提:在学习开发互联网网站程序前,需要了解知道一个客户端请求,如何能展现成一个炫丽的网页的. 一.域名请求实现 这幅图足以说明一个域名请求的过程了吧 二.服务器端的处理(Nodejs示例) 直接上nodejs代码 1 var http = require('http'); 2 3 http.createServer(function(req, res) { 4 if (req.method === 'GET') { 5 var html; 6 switch (req.url) { 7 case