码迷,mamicode.com
首页 > 其他好文 > 详细

Node开发--->7_服务器端开发

时间:2020-03-22 18:14:50      阅读:81      评论:0      收藏:0      [点我收藏+]

标签:http   src   param   pre   har   图片   query   解决   mic   

4 HTTP请求与相应处理

4.1 请求参数

技术图片

用户名和密码需要通过某种形式(请求参数)传递到服务器端,服务器端要获取内容,用于后面的验证。
请求参数分为get请求参数和post请求参数

4.2 get请求参数

技术图片

  • 发送请求
    (1)app.js
const http = require(‘http‘);
const app = http.createServer();

app.on(‘request‘, (req, res) => { 
    res.writeHead(200, {
        ‘content-type‘: ‘text/html;charset=utf8‘ //返回纯文本,若不指定这一项也是默认返回纯文本
    });
    console.log(req.url);

    if (req.url == ‘/index‘ || req.url == ‘/‘) { //错误写法req.url == ‘/index‘ ||  ‘/‘
        res.end(‘<h2>欢迎来到主页</h2>‘);
    } else if (req.url == ‘/list‘) {
        res.end(‘welcome to list page‘);
    } else {
        res.end(‘not found‘);
    }
    if (req.method == ‘POST‘) {
        res.end(‘post‘);
    } else if (req.method == ‘GET‘) {
        res.end(‘get‘);
    }
});
app.listen(3000); 
console.log(‘网站服务器启动成功‘);

(2)打开服务器,在浏览器中输入http://localhost:3000/index?name=zhangsan&age=20
技术图片
技术图片

  • 下面考虑在服务器端如何获取请求参数:在nodejs中提供了url内置模块,可以用于提取/index?name=zhangsan&age=20中的参数
    (1)app.js
const http = require(‘http‘);
const app = http.createServer();
//用于处理url地址
const url = require(‘url‘);

app.on(‘request‘, (req, res) => { 
    res.writeHead(200, {
        ‘content-type‘: ‘text/html;charset=utf8‘ //返回纯文本,若不指定这一项也是默认返回纯文本
    });
    //服务器端获取请求参数
    console.log(req.url);
    // url.parse(req.url); //parse:解析。  该方法返回一个对象
    console.log(url.parse(req.url));

    if (req.url == ‘/index‘ || req.url == ‘/‘) { //错误写法req.url == ‘/index‘ ||  ‘/‘
        res.end(‘<h2>欢迎来到主页</h2>‘);
    } else if (req.url == ‘/list‘) {
        res.end(‘welcome to list page‘);
    } else {
        res.end(‘not found‘);
    }
    if (req.method == ‘POST‘) {
        res.end(‘post‘);
    } else if (req.method == ‘GET‘) {
        res.end(‘get‘);
    }
});
app.listen(3000);
console.log(‘网站服务器启动成功‘);

(2)打开服务器,在浏览器中输入http://localhost:3000/index?name=zhangsan&age=20
技术图片
技术图片
(3)继续修改app.js将要查询的参数解析成对象的形式
将以下代码

console.log(url.parse(req.url));

修改为(添加第二个参数)

//参数1:要解析的url地址
//参数2:将要查询的参数解析成对象的形式
// url.parse(req.url,true); 
console.log(url.parse(req.url, true));

再刷新浏览器后:
技术图片
(4)继续修改app.js拿到具体的请求参数
将以下代码

//参数1:要解析的url地址
//参数2:将要查询的参数解析成对象的形式
// url.parse(req.url,true); 
console.log(url.parse(req.url, true));

修改为

//参数1:要解析的url地址false
//参数2:将要查询的参数解析成对象的形式
// url.parse(req.url,true); 
let params = url.parse(req.url, true).query;
console.log(params.name);
console.log(params.age);

再刷新浏览器后:
技术图片
上述获取到的zhangsan和20是字符串形式,下面将其修改为对象形式:

  • 解决not found问题
    添加请求参数后,判断失效。因为req.url里面既包含了请求地址又包含了请求参数,所以就不可以直接用url来判断
    (1)修改app.js
    将以下代码
let params = url.parse(req.url, true).query;
console.log(params.name);
console.log(params.age);

if (req.url == ‘/index‘ || req.url == ‘/‘) { //错误写法req.url == ‘/index‘ ||  ‘/‘
    res.end(‘<h2>欢迎来到主页</h2>‘);
} else if (req.url == ‘/list‘) {
    res.end(‘welcome to list page‘);
} else {
    res.end(‘not found‘);
}
if (req.method == ‘POST‘) {
    res.end(‘post‘);
} else if (req.method == ‘GET‘) {
    res.end(‘get‘);
}

修改为:

//解构对象
let { query, pathname } = url.parse(req.url, true)
console.log(query.name);
console.log(query.age);

if (pathname == ‘/index‘ || pathname == ‘/‘) { //错误写法req.url == ‘/index‘ ||  ‘/‘
    res.end(‘<h2>欢迎来到主页</h2>‘);
} else if (pathname == ‘/list‘) {
    res.end(‘welcome to list page‘);
} else {
    res.end(‘not found‘);
}

(2)开启服务器,刷新浏览器不再显示not found
技术图片

4.3 post请求参数

5 Node.js的工作原理

Node开发--->7_服务器端开发

标签:http   src   param   pre   har   图片   query   解决   mic   

原文地址:https://www.cnblogs.com/deer-cen/p/12546799.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!