根据模块化和松耦合的思想,一个简单的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 入门
分享到:
相关推荐
res.redirect('/'); } }); // 查询所有博客 Post.find({}, (err, posts) => { if (err) { console.error(err); res.status(500).send('内部服务器错误'); } else { res.render('index', { posts }); } }); ...
res.redirect('/'); } else { res.send('请输入有效消息'); } }); ``` 为了使表单提交后能刷新页面并显示新消息,我们还需要在客户端使用JavaScript监听表单提交事件,并使用Ajax或者Fetch API向服务器发送POST...
官方离线安装包,测试可用。使用rpm -ivh [rpm完整包名] 进行安装
res.redirect("/welcome?uid=" + req.body.userid) ; } } ``` 这段代码将检查客户端提交的用户名和密码,如果正确,则重定向到欢迎页面。 五、实现欢迎页面 在 routes/index.js 文件中,定义了欢迎页面的实现...
官方离线安装包,测试可用。使用rpm -ivh [rpm完整包名] 进行安装
官方离线安装包,测试可用。使用rpm -ivh [rpm完整包名] 进行安装
4. **响应对象**:`res` 对象提供了多种方法来发送响应,如 `res.send()`, `res.json()`, `res.redirect()` 等。 ### 二、安装与基本设置 要在项目中使用 Express,首先需要通过 npm(Node.js 包管理器)安装它: ...
【钉钉企业应用Demo(nodejs版)】是一个基于Node.js技术构建的企业级微应用示例项目,它由钉钉官方提供,旨在帮助开发者快速理解和上手钉钉微应用的开发工作。这个Demo集成了必要的库和工具,简化了开发流程,使得二...
你可以使用`express-sslify`强制HTTPS,或者使用`heroku-ssl-redirect`针对Heroku等平台。 ```javascript const forceSSL = require('express-sslify'); app.use(forceSSL.HTTPS(true)); ``` 对于文件上传,避免...
需要注意的是,如果你的应用同时需要支持HTTP和HTTPS,可以使用`http-redirect`中间件将HTTP请求重定向到HTTPS: ```javascript const http = require('http'); const httpServer = http.createServer(app); ...
response.writeHead(301, { location: redirect }); response.end(); return; } pathName += 'index.html'; } var filePath = path.join('http/webroot', pathName); var contentType = getContentType...
配置您可以配置以下环境变量来设置重定向: 使用REDIRECT_URL您可以配置重定向到的 url(默认为 ) REDIRECT_URL=http://example.com使用REDIRECT_STATUS_CODE您可以配置所需的重定向状态代码(默认为 301) ...
res.redirect('/ueditor/nodejs/config.json'); } })); module.exports = router; ``` 3. **配置路由** 在`app.js`文件中,使用`use()`方法注册上面创建的UEditor中间件: ```javascript const app = ...
宠物api 为宠物店开发NodeJS API 为什么? 这是来自Alura Cursos Online的NodeJS API开发训练营的摘要。...THEN should redirect to "/atendimento" AND status should be 301 / atendimento ::注册a
如果没有登录,我们使用`req.flash`来存储错误消息,并通过`res.redirect`将用户重定向到登录页面。 关于`req.flash`,这是一个常用的中间件`connect-flash`提供的功能,它允许我们在请求之间传递临时消息。在上述...
适用于NodeJS的Google DFP API客户端 基本 初始化DFP广告管理系统实例。 var Dfp = require ( 'node-google-dfp' ) , dfpUser = new Dfp . User ( NETWORK_CODE , APP_NAME , VERSION ) ; 接下来,设置您的客户端...
Nodejs 包装器 安装 从 NPM 安装。 npm install misfit-cloud-api --save 用法 var MisfitAPI = require ( 'misfit-cloud-api' ) ; 重定向到授权 URL var mySettings = { clientKey : 'your clientKey' , //...
请求 code 的目的就是获取用户的 openid(用户相对于当前公众号的唯一标识) 和access_token,请求的API:https://open.weixin.qq.com/connect/oauth2/authorize?appid=APPID&redirect_uri=REDIRECT_URI&res
Stepify()的调用会返回一个Stepify实例,在这里称之为workflow,用于调度所有task的执行。 step()的调用会创建一个Step实例,用于完成具体的异步操作(当然也可以是同步操作,不过意义不大),step之间使用简单的api...
当用户请求需要登录状态的页面时,如果没有登录,服务器端可以使用`res.redirect('/login');`将用户重定向到登录页面。如果用户已经登录,则通过`next()`调用下一个中间件或路由处理逻辑。 通过上述内容,我们可以...