`
songkang666
  • 浏览: 105904 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

NodeJS之Redirect

 
阅读更多
根据模块化和松耦合的思想,一个简单的http服务器可分为server.js,redirector.js,redirectHandlers.js以及launcher.js模块。

server.js文件中是非常基础的http服务器代码。
redirector.js用于对重定向的处理。
而redirectHandlers.js是对各种重定向处理函数的封装。
launcher.js用于调用应用的其他模块(比如server.js中的http服务器模块)来引导和启动应用。

上代码:
server.js
var http = require("http");
var url = require("url");

function start(redirect, redirectHandle) {
  function onRequest(request,response) {
    var pathname = url.parse(request.url).pathname;
    console.log("Request for " + pathname + " received.");
	
    var string = redirect(pathname, redirectHandle);
	
    response.writeHead(200,{"Content-Type":"text/plain"});
    response.write(string);
    response.end();
  }
  
  http.createServer(onRequest).listen(8089);
  console.log("Server has started.");
}

exports.start = start;


redirector.js
function redirect(pathname, redirectHandle) {

  if(typeof redirectHandle[pathname] === 'function') {
    return redirectHandle[pathname]();
  } else {
    console.log("Bad request for " + pathname + "page.");
    return "400 Not found";
  }
}
exports.redirect = redirect;


redirectHandlers.js
function index() {
  console.log("Redirect to 'index' page.");
  return "Hello guy!!!"
}

function what() {
  console.log("Redirect to 'what' page.");
  return "What can I do for you?"
}

function how() {
  console.log("Redirect to 'how' page.");
  return "How are you!"
}

exports.index = index;
exports.what = what;
exports.how = how;


launcher.js
var server = require("./server");
var redirector = require("./redirector");
var redirectHandlers = require("./redirectHandlers");

var redirectHandle = {};
redirectHandle["/"] = redirectHandlers.index;
redirectHandle["/index"] = redirectHandlers.index;
redirectHandle["/what"] = redirectHandlers.what;
redirectHandle["/how"] = redirectHandlers.how;

server.start(redirector.redirect, redirectHandle);


Node好强大:一个node做的豆瓣数据统计网站

more:
Node 入门
分享到:
评论

相关推荐

    Microblog-demo nodejs

    res.redirect('/'); } }); // 查询所有博客 Post.find({}, (err, posts) => { if (err) { console.error(err); res.status(500).send('内部服务器错误'); } else { res.render('index', { posts }); } }); ...

    nodejs简单聊天室

    res.redirect('/'); } else { res.send('请输入有效消息'); } }); ``` 为了使表单提交后能刷新页面并显示新消息,我们还需要在客户端使用JavaScript监听表单提交事件,并使用Ajax或者Fetch API向服务器发送POST...

    rh-nodejs8-nodejs-is-redirect-1.0.0-6.el7.noarch.rpm

    官方离线安装包,测试可用。使用rpm -ivh [rpm完整包名] 进行安装

    NodeJS连接MongoDB.docx

    res.redirect("/welcome?uid=" + req.body.userid) ; } } ``` 这段代码将检查客户端提交的用户名和密码,如果正确,则重定向到欢迎页面。 五、实现欢迎页面 在 routes/index.js 文件中,定义了欢迎页面的实现...

    rh-nodejs6-nodejs-is-redirect-1.0.0-6.el7.noarch.rpm

    官方离线安装包,测试可用。使用rpm -ivh [rpm完整包名] 进行安装

    rh-nodejs6-nodejs-is-redirect-1.0.0-5.el7.noarch.rpm

    官方离线安装包,测试可用。使用rpm -ivh [rpm完整包名] 进行安装

    nodejs express模块

    4. **响应对象**:`res` 对象提供了多种方法来发送响应,如 `res.send()`, `res.json()`, `res.redirect()` 等。 ### 二、安装与基本设置 要在项目中使用 Express,首先需要通过 npm(Node.js 包管理器)安装它: ...

    钉钉企业应用Demo(nodejs版)

    【钉钉企业应用Demo(nodejs版)】是一个基于Node.js技术构建的企业级微应用示例项目,它由钉钉官方提供,旨在帮助开发者快速理解和上手钉钉微应用的开发工作。这个Demo集成了必要的库和工具,简化了开发流程,使得二...

    nodejs的web安全示例代码|safety.zip

    你可以使用`express-sslify`强制HTTPS,或者使用`heroku-ssl-redirect`针对Heroku等平台。 ```javascript const forceSSL = require('express-sslify'); app.use(forceSSL.HTTPS(true)); ``` 对于文件上传,避免...

    NodeJS配置HTTPS服务实例分享

    需要注意的是,如果你的应用同时需要支持HTTP和HTTPS,可以使用`http-redirect`中间件将HTTP请求重定向到HTTPS: ```javascript const http = require('http'); const httpServer = http.createServer(app); ...

    Nodejs如何搭建Web服务器.docx

    response.writeHead(301, { location: redirect }); response.end(); return; } pathName += 'index.html'; } var filePath = path.join('http/webroot', pathName); var contentType = getContentType...

    http-redirect:易于安装的 nodejs 重定向应用程序可替代托管提供商的重定向服务

    配置您可以配置以下环境变量来设置重定向: 使用REDIRECT_URL您可以配置重定向到的 url(默认为 ) REDIRECT_URL=http://example.com使用REDIRECT_STATUS_CODE您可以配置所需的重定向状态代码(默认为 301) ...

    nodejs后台集成ueditor富文本编辑器的实例.docx

    res.redirect('/ueditor/nodejs/config.json'); } })); module.exports = router; ``` 3. **配置路由** 在`app.js`文件中,使用`use()`方法注册上面创建的UEditor中间件: ```javascript const app = ...

    pet-api:为宠物店开发NodeJS API

    宠物api 为宠物店开发NodeJS API 为什么? 这是来自Alura Cursos Online的NodeJS API开发训练营的摘要。...THEN should redirect to "/atendimento" AND status should be 301 / atendimento ::注册a

    Express+Nodejs 下的登录拦截实现代码

    如果没有登录,我们使用`req.flash`来存储错误消息,并通过`res.redirect`将用户重定向到登录页面。 关于`req.flash`,这是一个常用的中间件`connect-flash`提供的功能,它允许我们在请求之间传递临时消息。在上述...

    node-google-dfp:通过NodeJS与Google DFP集成的服务

    适用于NodeJS的Google DFP API客户端 基本 初始化DFP广告管理系统实例。 var Dfp = require ( 'node-google-dfp' ) , dfpUser = new Dfp . User ( NETWORK_CODE , APP_NAME , VERSION ) ; 接下来,设置您的客户端...

    misfit-cloud-api-wrapper:Misfit Cloud API 的 Nodejs 包装器

    Nodejs 包装器 安装 从 NPM 安装。 npm install misfit-cloud-api --save 用法 var MisfitAPI = require ( 'misfit-cloud-api' ) ; 重定向到授权 URL var mySettings = { clientKey : 'your clientKey' , //...

    nodejs微信公众号支付开发

    请求 code 的目的就是获取用户的 openid(用户相对于当前公众号的唯一标识) 和access_token,请求的API:https://open.weixin.qq.com/connect/oauth2/authorize?appid=APPID&redirect_uri=REDIRECT_URI&res

    Node.js流程控制引擎Stepify.zip

    Stepify()的调用会返回一个Stepify实例,在这里称之为workflow,用于调度所有task的执行。 step()的调用会创建一个Step实例,用于完成具体的异步操作(当然也可以是同步操作,不过意义不大),step之间使用简单的api...

    Nodejs中session的简单使用及通过session实现身份验证的方法

    当用户请求需要登录状态的页面时,如果没有登录,服务器端可以使用`res.redirect('/login');`将用户重定向到登录页面。如果用户已经登录,则通过`next()`调用下一个中间件或路由处理逻辑。 通过上述内容,我们可以...

Global site tag (gtag.js) - Google Analytics