前言:
最近在看深入浅出nodejs第八章构建web应用。想把自己的阅读写成总结。也希望给他们做一个参考。常使用nodejs 模块 (http,path,url,queryString,fs)
1.如果用node构建一个服务器(http)
let http = require('http')
let port = 3000
let server = http.createServer((req, res) => {
res.writeHead(200,{'Content-type':'text/plain'})
res.end('hello word');
})
server.listen(port);
console.log(`server run ${port} port`)
上面的代码就是构建一个最简单的服务器,然后我们也许需求并没有这么简单,我们经常需要考虑如下问题:
- 请求方法的判断
- url的路径解析
- url中查询字符串解析
- cookie的解
- basic认证
- 表单数据的解析
- 任意格式文件上传
- session 会话
这个业务需要我们都需要从下面的函数开始扩展
var handle = function (req, res){
res.writeHead(200,{'Content-type':'text/plain'})
res.end('hello word');
}
2.请求方法
常见的请求方式有get, post, put, delete.
get: 获取一个请求
post:更新一个请求
put:新增一个请求
delete:删除一个请求
在nodejs中使用req.method可以获取请求方式
下面的代码是一种根据请求将页面分发的思路,是一种业务化繁为简的方式
//一种解决请求的方式
function reqMethods(req, res){
switch (res.method){
case POST:m_updata(req, res);break;
case PUT:m_put(res,res);break;
case DELETE:m_delete(res,res);break;
case GET:
default:m_get(res,res)
}
}
function m_updata(req, res){
// todo
console.log(req.method)
}
function m_delete(res,res){
console.log(req.method)
}
function m_put(res,res){
console.log(req.method)
}
function m_get(res,res){
console.log(req.method)
}
3. 路径解析 (url)
url.parse(res.url) 可以解析 把路由解析成字符串
http://localhost:3000/index.html?query=aaa#abc
url.parse(req.url) ==> 下面的形式
{
protocol: null,
slashes: null,
auth: null,
host: null,
port: null,
hostname: null,
hash: null,
search: "?query=aaa",
query: "query=aaa",
pathname: "/index.html",
path: "/index.html?query=aaa",
href: "/index.html?query=aaa"
}
3. url中查询字符串解析 (queryString)
let cleintPath = url.parse(req.url)
let query = queryString.parse(cleintPath.query)
获取到get请求参数
注意:
http://localhost:3000/404.html?query=aaa&query=aaa#ab
{
query: - [
"aaa",
"aaa"
]
}
http://localhost:3000/404.html?query=aaa&page=aaa#abc
{
query: "aaa",
page: "aaa"
}
网友评论