提交 63e2afe7 编写于 作者: R renfufei

express参考API

上级 c9e12118
......@@ -457,6 +457,110 @@ puppeteer相关的API和配置项请参考: <https://github.com/GoogleChrome/pup
### 9. 使用 http 服务来调用
NodeJS 通过 http/https 模块来提供web服务。
创建新项目:
```
mkdir -p pdfprint
cd pdfprint
```
创建 `server.js` 文件
```
// 模块以及端口号
const http = require('http');
const http_port = 80;
// 请求处理器
const requestHandler = (request, response) => {
console.log("request.url="+request.url);
response.end('Hello Node.js Server!');
};
// server实例
const server = http.createServer(requestHandler);
// 监听
server.listen(http_port, function(err){
if (err) {
return console.error('something bad happened', err);
}
console.log(`server is listening on ${http_port}`);
});
```
启动服务器:
```
node server.js
```
安装 express 框架:
```
mkdir -p pdfprint
cd pdfprint
npm install express --save
npm install express-handlebars --save
```
其中 `--save` 的意思,是同时将依赖信息写入 package.json;
然后编写 express-server.js 文件:
```
// express参考API: http://expressjs.com/en/api.html
// 模块依赖
const path = require('path');
const express = require('express');
// 端口号
const http_port = 80;
// express服务实例
const server = express();
// 请求 Mapping
// get, post, put, all 等
server.get('/', function(request, response){
// express 包装的参数
var params = request.query;
response.json(params);
});
// 启动监听
server.listen(http_port, function(err){
if (err) {
// 如果启动时发生错误:
return console.error('something bad happened', err);
}
console.log(`server is listening on ${http_port}`);
});
```
启动 express 服务器:
```
node express-server.js
```
启用调试模式:
```
set DEBUG=express*
node express-server.js
```
参考: <https://blog.risingstack.com/your-first-node-js-http-server/>
......
// express参考API: http://expressjs.com/en/api.html
// 模块依赖
const path = require('path');
const express = require('express');
const exphbs = require('express-handlebars');
// 端口号
const http_port = 80;
// express服务实例
const server = express();
// mount 事件
server.on('mount', function (parent) {
console.log('Server Mounted:', parent);
});
// 中间件模式
server.use(function(request, response, next){
console.log("request.url="+request.url);
console.log("request.headers=", request.headers);
next();
});
// 中间件模式
server.use(function(request, response, next){
request.random = Math.random();
request.date = new Date();//.getTime();
next();
});
// 最后可以加上: 错误处理器
server.use(function errorHandler(err, request, response, next){
console.error('something bad happened', err);
response.status(500).send('Server-Error:' + err);
});
// 注册模板引擎: (扩展名, 处理函数)
server.engine('.hbs', exphbs({
defaultLayout: 'main',
extname: '.hbs',
layoutsDir: path.join(__dirname, 'views/layouts')
}));
server.set('view engine', '.hbs');
server.set('views', path.join(__dirname, 'views'));
// 请求 Mapping
// get, post, put, all 等
server.all('*', function requireAuth(request, response, next){
// 校验
//
next();
});
//
server.get('/', function(request, response){
// view_name, data
response.render('home', {
name: 'John',
date: request.date
});
});
//
server.get('/random.json', function(request, response){
//response.end('Hello From Express!');
response.json({
message : "Hello From Express!",
random: request.random
});
});
//
server.get('/pdf.json', function(request, response){
// express 包装的参数
var params = request.query;
//response.end('Hello From Express!');
response.json(params);
});
// 启动监听
server.listen(http_port, function(err){
if (err) {
// 如果启动时发生错误:
return console.error('something bad happened', err);
}
console.log(`server is listening on ${http_port}`);
});
//
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册