http通信介绍
nodejs应用
安装nodejs环境省略(百度)
package.json
{ "name": "node_demo", "main": ".app.js", "dependencies": { "body-parser": "^1.15.2", "express": "^4.14.0" } }
app.js
var express = require(\'express\'); var bodyParser = require(\'body-parser\'); var app = express(); // use可以拦截get,post等其他全部请求 // 所有请求都会拦截 app.use(bodyParser.json()); app.use(bodyParser.urlencoded({ extended: false })); // 静态文件目录 app.use(express.static(__dirname + \'/public\')); app.get(\'/\', function (req, res) { res.send(\'hello\'); }); var server = app.listen(80, function () { var port = server.address().port; console.log(\'Example app listening at http://localhost:%s\', port); });
然后
node app.js // 访问浏览器 localhost:80 就能连接上来了
Express简单应用
像上面那样,把路由统统写到app.js在项目中显然不合适。
一个nodejs一般分为网络处理和业务逻辑处理,网络处理部分我们一般使用像Express这样的框架。
Express(http://www.expressjs.com.cn/)拥有路由模块Router,通过路由可以把路由分散到各个模块。
Express基础应用示例
项目结构
主要代码
app.js
var express = require(\'express\'); var bodyParser = require(\'body-parser\'); var app = express(); // use可以拦截get,post等其他全部请求 // 所有请求都会拦截 app.use(bodyParser.json()); app.use(bodyParser.urlencoded({ extended: false })); // 静态文件目录 app.use(express.static(__dirname + \'/public\')); app.use(\'/user\', require(\'./routes/user.js\')) var server = app.listen(80, function () { var port = server.address().port; console.log(\'Example app listening at http://localhost:%s\', port); });
user.js
var express = require(\'express\'); var router = express.Router(); router.all(\'/list\', function (req, res) { console.log(req.method); console.log(req.baseUrl); console.log(req.path); console.log(req.headers[\'user-agent\']); // 获取某一请求头 console.log(req.get(\'user-agent\')); // 获取url查询参数 console.log(req.query); // 获取url查询参数值 console.log(req.query.id); // post请求时,获取body中的参数值 console.log(req.body); console.log(req.body.id); res.send(\'hello\'); }) // router.get(\'/:id\', function (req, res) { // // rest风格 // console.log(req.params.id); // res.send(\'ok\'); // }) router.get(\'/fb\', function (req, res) { res.status(403).send(\':( forbidden!\') }) router.get(\'/tt\', function (req, res) { res.contentType(\'application/javascript\') res.sendFile(\'/ok.js\', {root: __dirname + \'/../public\'}); }) router.get(\'/mm\', function (req, res) { // 常用于ajax返回 res.json({a:1, b:[true, \'ok\']}); }) module.exports = router;
test.html
<!DOCTYPE html> <html> <head> <title>我是test页面</title> </head> <body> <h1>我是test</h1> <form action="/user/list?id=query_id" method="post"> <input type="text" name="id" value="body_id"> <input type="submit" name="" value="submit"> </form> </body> </html>
然后,同样是运行
node app.js