node.js搭建動態伺服器
//引入相關模組
let http = require('http');
let path = require('path');
let url = require('url');
let fs = require('fs');
//新增靜態自願程式碼,詳情看上一節
function staticRoot(staticPath, req, res) {
let pathObj = url.parse(req.url, true);
if (pathObj.pathname === '/favicon.ico') {
return;
}
if (pathObj.pathname === '/') {
pathObj.pathname += 'index.html';
}
let filePath = path.join(staticPath, pathObj.pathname);
fs.readFile(filePath, 'binary', (err, data) => {
if (err) {
res.writeHead(404, 'not found');
res.write('<h1>Not Found</h1>')
res.end()
} else {
res.writeHead(200, 'ok')
res.write(data, 'binary');
res.end()
}
})
}
//介面程式碼
var routes = {
'/a': function(req, res){
res.end(JSON.stringify(req.query))
},
'/b': function(req, res){
res.end('match /b')
},
'/a/c': function(req, res){
res.end('match /a/c')
},
'/search': function(req, res){
res.end('username='+req.body.username+',password='+req.body.password)
}
}
//解析請求資源
function routePath(req, res) {
//解析請求的url
let pathObj = url.parse(req.url, true);
//獲取引數名稱,返回函式物件
let handleFunc = routes[pathObj.pathname];
//判斷routes陣列中存在介面資料
if (handleFunc) {
//存在,監聽data和on事件
let body = '';
req.on('data', function (chunk) {
//獲取載入的資料
body += chunk;
console.log(body)
}).on('end', function () {
//載入完成,解析body
req.body = parseBody(body);
//傳遞引數,呼叫引數物件
handleFunc(req, res)
})
} else {
//不存在,則是靜態資源
staticRoot(path.join(__dirname, 'static'), req, res)
}
}
//解析body引數,簡單的處理
function parseBody(body){
console.log(body)
var obj = {}
body.split('&').forEach(function(str){
obj[str.split('=')[0]] = str.split('=')[1]
})
return obj
}
//建立服務
http.createServer((req, res) => {
routePath(req, res);
}).listen(8080)
相關文章
- 搭建Node.js靜態伺服器Node.js伺服器
- Node.js 系列 - 搭建靜態資源伺服器Node.js伺服器
- Node.js 系列 – 搭建靜態資源伺服器Node.js伺服器
- Node.js 靜態伺服器新知Node.js伺服器
- Node.js 系列 - 搭建 "Hello World" HTTP 伺服器Node.jsHTTP伺服器
- Node.js 系列 – 搭建 “Hello World” HTTP 伺服器Node.jsHTTP伺服器
- node.js輕鬆搭建一個伺服器Node.js伺服器
- Node.js新手上路——動手擼一個靜態資源伺服器Node.js伺服器
- 淺談使用node.js怎麼搭建本地伺服器Node.js伺服器
- 如何使用Node.js核心快速搭建伺服器 【完整教程原始碼】Node.js伺服器原始碼
- 如何快速搭建靜態資源伺服器伺服器
- 從零搭建 Node.js 企業級 Web 伺服器(二):校驗Node.jsWeb伺服器
- SpringBoot - 搭建靜態資源儲存伺服器Spring Boot伺服器
- node.js伺服器Node.js伺服器
- 從零搭建 Node.js 企業級 Web 伺服器(八):網路安全Node.jsWeb伺服器
- 如何使用Koa搭建靜態資原始檔伺服器伺服器
- Linux下的node.js搭建LinuxNode.js
- Node.js搭建Https服務Node.jsHTTP
- 從零搭建 Node.js 企業級 Web 伺服器(十五):總結與展望Node.jsWeb伺服器
- 從零搭建 Node.js 企業級 Web 伺服器(十一):定時任務Node.jsWeb伺服器
- ROS 動態引數伺服器教程ROS伺服器
- Node.js一行程式碼實現靜態檔案伺服器Node.js行程伺服器
- 獻給移動端的伺服器搭建伺服器
- Nginx 靜態檔案伺服器搭建及autoindex模組解析Nginx伺服器Index
- zookeeper 伺服器動態上下線程式碼伺服器線程
- 手動搭建自己的nuget伺服器及使用伺服器
- (系列十四)Vue3+WebApi 搭建動態選單VueWebAPI
- adsl動態撥號伺服器是什麼伺服器
- 伺服器動態ip和靜態ip的區別和特點伺服器
- 從零搭建 Node.js 線上環境Node.js
- Node.js之快速搭建微信公眾號伺服器 [全教程原始碼,拿去就能跑]Node.js伺服器原始碼
- node之搭建一個http完整的靜態伺服器(命令列工具)HTTP伺服器命令列
- 雪亮工程動態視訊監控系統建設動態人臉識別系統搭建
- 更優雅的 node.js 框架 :nestjs 5.1 釋出 ,支援非同步動態 modules 。Node.js框架非同步
- BT伺服器搭建伺服器
- Git 伺服器搭建Git伺服器
- 搭建SVN伺服器伺服器
- 阿里雲+docker搭建簡單node.js服務阿里DockerNode.js