当先锋百科网

首页 1 2 3 4 5 6 7

基本使用

// 导入http模块
const http = require('http')
// 创建服务对象
const server = http.createServer((request,response)=>{
    /* 
    // 获取请求的方法:GET、POST等等
    console.log(request.method,'method');//GET
    // 获取请求的url
    //只包含路径以及路径中的查询字符串
    console.log(request.url,'url');///search?name=jack&age=12
    // 获取请求头
    console.log(request.headers,'headers');//{...}
    // 获取请求的服务器及端口号
    console.log(request.headers.host,'host');//127.0.0.1:999 request
*/

    // 定义一个变量用来接收响应体
    let body = '';
    // 绑定data事件
    request.on('data',chunk=>{
        body += chunk
    })
    // 绑定end事件
    request.on('end',()=>{
        console.log(body,"响应体内容");//name=qqqqq&age=wwwww 响应体内容
    })

    // 设置请求头类型,可以防止中文乱码
    response.setHeader('content-type','text/html;charset=utf-8')
    // 设置响应体内容
    response.end('中文')//此方法只能调用一次,而且必须得调用
})
// 监听端口,启动服务
server.listen(999,()=>{
    console.log('服务已经启动');
})

注:以下代码皆为创建的方法server 里面的内容

获取请求体

   // 定义一个变量用来接收响应体
    let body = '';
    // 绑定data事件
    request.on('data',chunk=>{
        body += chunk
    })
    // 绑定end事件
    request.on('end',()=>{
        console.log(body,"响应体内容");//name=qqqqq&age=wwwww 响应体内容
    })

获取请求URL以及查询字符串

// 获取请求路径及查询字符串
// 利用url模块的parse方法解析请求路径
// 参数一:服务对象里面的URL
// 参数二:是否将查询字符串解析为对象形式,
// url模块需要导入
// 导入url模块
const url = require('url')

let res = url.parse(request.url,true)
// 真正的路径
let path = res.pathname
// 获取查询字符串
// 传入第二个参数后res.query是一个对象
let queryString = res.query.属性名


// 获取请求路径及查询字符串方法二
// 参数一:(字符串),完整路径或者查询路径及查询字符串
// 参数二:(字符串),域名及端口号(端口号可不写)
// 两个参数合起来或者单独使用必须得是一个完整的路径
let res2 = new URL(request.url,'127.0.0:999');
// 真正的路径
let path2 = res2.pathname
// 传入第二个参数后res.query是一个对象
// 因为res2.searchParams并不是一个对象,所以需要.get方法来获取
let queryString2 = res2.searchParams.get('键名').

设置响应报文

// 设置响应状态码
response.statusCode = 200;//默认状态码就是200
response.statusCode = 201;//状态码可以多次设置
// 设置响应状态描述
response.statusMessage = '我是响应状态描述'
// 设置响应头
response.setHeader('header','heder-content')
response.setHeader('header','heder-content')//响应头可以设置多个
// 参数二可以是一个数组,当为数组时设置的响应头名字是一样的,但是value不一样
response.setHeader('key',['header-content3','header-content4','header-content5',])//响应头value值不能设置为中文
// 响应体设置
response.write('我是响应头的内容');
response.write('我是响应头的内容2');//次方法可以多次调用
// response.end()方法也是设置响应体的内容,write方法跟end方法可以同时出现,
// 同时出现时二者设置的响应头内容会被拼接,end方法只能调用一次