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就是 医院地址了

需重点掌握几个方法:
 

  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的缩写,意为请求

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Motion_zq

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值