本文概述
- 需求
- Express中HTTP服务器的结构
- 你好, 世界
- 处理路线和请求方法
- 使用参数处理路线
- 回应类型
- HTTPS与Express
【如何在Node.js中使用Express创建HTTP服务器】在本文中, 你将学习如何使用Express和你需要了解的其他基础知识来创建http服务器。
需求 在项目中添加Express作为依赖项, 使用Node.js命令提示符中的以下命令添加Express:
npm install express
你可以使用– save参数将其执行, 以将其包含在package.json中(如果有)。现在, 你将可以在JavaScript文件中需要express模块??。
Express中HTTP服务器的结构
文章图片
- 中间件功能适用的HTTP方法。
- 中间件功能适用的路径(路由)。
- 中间件功能。
- 中间件函数的回调参数, 按照惯例称为” next” 。
- 中间件函数的HTTP响应参数, 按照惯例称为” res” 。
- 中间件函数的HTTP请求参数, 按照惯例称为” req” 。
要使用express创建第一个HTTP服务器, 请创建一个名称为server.js的js文件, 并在其上添加以下代码:
// Require express and create an instance of itvar express = require('express');
var app = express();
// on the request to root (localhost:3000/)app.get('/', function (req, res) {res.send('<
b>
My<
/b>
first express http server');
});
// On localhost:3000/welcomeapp.get('/welcome', function (req, res) {res.send('<
b>
Hello<
/b>
welcome to my http server made with express');
});
// Change the 404 message modifing the middlewareapp.use(function(req, res, next) {res.status(404).send("Sorry, that route doesn't exist. Have a nice day :)");
});
// start the server in the port 3000 !app.listen(3000, function () {console.log('Example app listening on port 3000.');
});
现在, 在Node.js命令提示符中使用以下命令保存内容并执行服务器:
node server.js
导航到先前在localhost(http:// localhost:3000或http:// localhost:3000 / welcome)的server.js文件中设置的端口3000, 并观察到魔术发生了。
处理路线和请求方法 对于预定义的路径, 你可以设置默认的请求方法, 甚至可以全部设置。路由可以是字符串, 模式或正则表达式。
var express = require('express');
var app = express();
app.get('/', function (req, res) {res.send('<
b>
My<
/b>
first express http server');
});
// 1) Add a route that answers to all request typesapp.route('/article').get(function(req, res) {res.send('Get the article');
}).post(function(req, res) {res.send('Add an article');
}).put(function(req, res) {res.send('Update the article');
});
// 2) Use a wildcard for a route// answers to : theANYman, thebatman, thesupermanapp.get('/the*man', function(req, res) {res.send('the*man');
});
// 3) Use regular expressions in routes// responds to : batmobile, batwing, batcave, batarangapp.get(/bat/, function(req, res) {res.send('/bat/');
});
app.use(function(req, res, next) {res.status(404).send("Sorry, that route doesn't exist. Have a nice day :)");
});
app.listen(3000, function () {console.log('Example app listening on port 3000.');
});
路由路径与请求方法结合, 定义了可以发出请求的端点。路由路径可以是字符串, 字符串模式或正则表达式。
使用参数处理路线 正如其他语言的已知服务器端框架的已知路由系统(例如Symfony)所做的那样, 允许你创建动态url, 该动态url期望url中的参数(而不是GET参数, 而是URL的一部分)返回动态内容, Express allow你可以使用url中的” / default-url /:parameter” 语法以相同的方式实现此目标。
var express = require('express');
var app = express();
app.get('/', function (req, res) {res.send('<
b>
My<
/b>
first express http server');
});
// route with parameters// matches to : /books/stephenking/category/horrorapp.get('/books/:user/category/:categorySlug', function(req, res) {console.log(req.params);
var username = req.params.user;
var category = req.paramas.categorySlug;
res.send(req.params);
});
app.use(function(req, res, next) {res.status(404).send("Sorry, that route doesn't exist. Have a nice day :)");
});
app.listen(3000, function () {console.log('Example app listening on port 3000.');
});
回应类型 在服务器端最常见的任务之间, 你需要向用户返回响应, Express有许多方法可以根据你的需要返回特定响应:
方法 | 描述 |
---|---|
res.download() | 提示要下载的文件。 |
重发() | 结束响应过程。 |
res.json() | 发送JSON响应。 |
res.jsonp() | 发送带有JSONP支持的JSON响应。 |
res.redirect() | 重定向请求。 |
res.render() | 渲染视图模板。 |
res.send() | 发送各种类型的响应。 |
res.sendFile() | 将文件作为八位字节流发送。 |
res.sendStatus() | 设置响应状态代码, 并将其字符串表示形式发送为响应正文。 |
app.get('/', function (req, res) {// JSON responseres.json({'myJson':'object'});
// Generate file downloadres.download('/path-to-file.txt');
// redirect to other urlres.redirect('/foo/bar');
res.redirect('http://example.com');
// Other response typesres.send(new Buffer('whoop'));
res.send({ some: 'json' });
res.send('<
p>
some html<
/p>
');
res.status(404).send('Sorry, we cannot find that!');
res.status(500).send({ error: 'something blew up' });
});
HTTPS与Express 有时你需要访问浏览器的特殊功能, 这些功能仅在安全连接中可用, 因此需要为服务器提供SSL支持。
要使用Express实现它, 你需要访问node.js的https模块(默认情况下可用), 然后使用createServer方法创建服务器并提供.pem证书的路径(如果你想知道如何创建)。
var fs = require('fs');
var http = require('http');
var https = require('https');
var privateKey= fs.readFileSync('certificates/key.pem', 'utf8');
var certificate = fs.readFileSync('certificates/cert.pem', 'utf8');
var credentials = {key: privateKey, cert: certificate};
var express = require('express');
var app = express();
// your express configuration herevar httpServer = http.createServer(app);
var httpsServer = https.createServer(credentials, app);
// For httphttpServer.listen(8080);
// For httpshttpsServer.listen(8443);
app.get('/', function (req, res) {res.header('Content-type', 'text/html');
return res.end('<
h1>
Hello, Secure World!<
/h1>
');
});
通过这种方式, 你将使用Express导航到https:// localhost:8443以安全模式访问localhost。如果你想知道如何创建.pem必需文件以使服务器正常工作, 请阅读本文。
玩得开心 !
推荐阅读
- 如何从Google Analytics(分析)中排除特定的IP地址
- 如何在PHP中逐行有效地读取和解析巨大的CSV文件
- 如果要创建和测试你的第一个印刷电路板(PCB),需要知道的内容
- 如何使用PHP(A到Z)自动生成目录的字母结构
- 如何建立IT网络审核清单
- 如何在Symfony 4命令中从dotenv文件vars中检索值
- 如何在Symfony 5中的命令内部渲染Twig视图
- linux|一文搞明白Linux内核《物理内存模型》
- MySQL 索引管理及执行计划