node.js基本的发送请求和响应

客户端访问服务器,服务器对客户端发来的数据做一个处理之后响应回去

1.客户端访问服务器

通过http协议去访问

什么是http协议呢? 超文本传输协议

请求的话呢有一个请求体和请求体:

请求头:键值对保存客户端的信息
请求体:保存post发送的信息

1.服务器会处理客户端发来的请求 将浏览器发送到服务器的数据封装成一个Request对象

2.然后再执行回调函数createServe将上一步封装好的对象赋值给第一个参数req

3.在回调函数中通过req可以获得本次请求中浏览器向服务器发送的数据

代码实现: 

// 1.导入http模块
// 它是一个内置模块,返回的是一个对象
const http = require('http')

// 2.创建一个服务
// 这个服务就是用来接收来自客户端的http请求 并且可以处理这个请求
// 这个方法需要传入1个回调函数 两个形参:req res
// 这个回调函数 在服务接收到来自客户端的http请求的时候 就会自动执行
const serve = http.createServer((req, res) => {
    console.log(`接收到了来自客户端${getClientIp(req)}请求`);
    res.end('Hello node.js')
});

// 3.开启这个服务
// 监听:
//     参数1: 服务工作的端口号
//     参数2:回调函数 在服务器开启以后自动执行
serve.listen(8000, () => {
    console.log('服务成功开启');
})


function getClientIp(req) {
    return req.headers['x-forwarded-for'] ||
        req.connection.remoteAddress ||
        req.socket.remoteAddress ||
        req.connection.socket.remoteAddress;
};

端口类似于生活中去医院看病的 具体窗口,如付款窗口,每一个窗口发挥着不同的作用 ;IP就是 医院地址了

扫描二维码关注公众号,回复: 16440681 查看本文章

需重点掌握几个方法:
 

  a. req.headers  获取本次请求 客户端发送到服务端的请求体消息

  b. req.url           获取本次请求 客户端请求的URL部分 以'/'开头 如果没有URL 值就是'/'

  c. req.method   获取本次请求 客户端请求服务端的HTTP方法get/post


2.服务器对客户端发来的数据做一个处理之后响应回去

// 1.导入http模块
// 它是一个内置模块,返回的是一个对象
const http = require('http')
const serve = http.createServer((req, res) => {
    console.log(`接收到了来自客户端${getClientIp(req)}请求`);
    res.setHeader('Content-Type', 'text/html;charset=utf8')
    // write方法向浏览器写入数据 直接收字符串和Buffer数据
    res.write('<h1>王小美</h1>');
    // 设置响应状态码
    res.statusCode = 200;
    // end方法代表本次请求结束了,一定要写的
    // 可以传递参数:表示结束并将数据追加到响应体中
    res.end('Hello node.js');
});

serve.listen(8000, () => {
    console.log('服务成功开启');
})

function getClientIp(req) {
    return req.headers['x-forwarded-for'] ||
        req.connection.remoteAddress ||
        req.socket.remoteAddress ||
        req.connection.socket.remoteAddress;
};

 重点掌握:
       响应头:
        Content-Type: 告诉浏览器 服务器发给你的是什么数据类型
                      还可以告诉浏览器文本的编码格式
         text/html  服务端给浏览器的数据是html 浏览器就会按照html解析
         text/plain 服务端给浏览器的数据是纯文本 浏览器就会原样显示

res是response的缩写,意为响应

req是request的缩写,意为请求

猜你喜欢

转载自blog.csdn.net/Motion_zq/article/details/125098796