Nodejs基础6之HTTP模块的获取请求行和请求头、获取请求体、获取请求路径和查询字符串、http请求练习、设置HTTP响应报文、http响应练习

这篇具有很好参考价值的文章主要介绍了Nodejs基础6之HTTP模块的获取请求行和请求头、获取请求体、获取请求路径和查询字符串、http请求练习、设置HTTP响应报文、http响应练习。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

HTTP模块

含义 语法 重点掌握
请求方法 request.method *
请求版本 request.httpVersion
请求路径 request.url *
URL 路径 require(‘url’).parse(request.url).pathname *
URL 查询字符串 require(‘url’).parse(request.url, true).query *
请求头 request.headers *
请求体 request.on(‘data’, function(chunk){}),request.on(‘end’, function(){});

获取请求行和请求头

// 1、导入http模块
const http=require('http')

// 2、创建服务对象
const server=http.createServer((request,response)=>{
    response.end('hello http')  //设置响应体
    // 获取请求的方法
    console.log("request.method:",request.method)
    // 获取请求的url
    console.log("request.url:",request.url)  //只包含url中的路径与查询字符串
    // 获取http协议的版本号
    console.log("request.httpVersion:",request.httpVersion)
    // 获取http的请求头
    console.log("request.headers:",request.headers);
    console.log("request.headers.host",request.headers.host)  //获取单个的请求头
})

// 3、监听端口,启动服务
server.listen(9000,()=>{
    console.log('服务已经启动...')
})

浏览器发送请求:
nodejs http 请求头,Nodejs,前端,http,网络协议,网络,node.js
终端输出内容:
nodejs http 请求头,Nodejs,前端,http,网络协议,网络,node.js

获取请求体

//1、导入http模块
const http=require('http')

//2、创建服务对象
const server=http.createServer((request,response)=>{
    //1.声明一个变量
    let body=''
    //2.绑定data事件
    request.on('data',chunk => {
        body+=chunk  //进行加法运算时候,会将字节自动转换为字符串进行加法运算
    })
    //3.绑定end事件
    request.on('end',()=>{
        console.log(body)
        //响应
        response.end('httpServer')
    })
})

server.listen(9000,()=>{
    console.log("服务器已经启动了...")
})

form表单

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<form action="http://127.0.0.1:9000" method="post">
    <input type="text" name="username"> <br>
    <input type="password" name="password"> <br>
    <input type="submit" value="提交">
</form>
</body>
</html>

  1. 启动服务
    nodejs http 请求头,Nodejs,前端,http,网络协议,网络,node.js

  2. 浏览器打开form表单,输入账户密码,点击提交
    nodejs http 请求头,Nodejs,前端,http,网络协议,网络,node.js

  3. 提交之后页面跳转链接

nodejs http 请求头,Nodejs,前端,http,网络协议,网络,node.js

  1. 终端输出url拼接字符串
    nodejs http 请求头,Nodejs,前端,http,网络协议,网络,node.js

获取请求路径和查询字符串

方式一

const http=require('http')
//1、引入url模块
const url=require('url')

const server = http.createServer((request,response)=>{
    //2、解析request.url
    const res=url.parse(request.url)
    console.log("res",res)
    // 路径
    console.log("res.pathname",res.pathname);
    // 解析request.url 第二个参数设置为true
    const resObj=url.parse(request.url,true)
    console.log("resObj",resObj)
    // 查询字符串
    console.log("resObj.query.keyword",resObj.query.keyword)
    response.end('url')
});

server.listen(9000,()=>{
    console.log("服务器已经启动......")
})

发送了两个请求
nodejs http 请求头,Nodejs,前端,http,网络协议,网络,node.js
输出的也是两个请求的内容:
nodejs http 请求头,Nodejs,前端,http,网络协议,网络,node.js

nodejs http 请求头,Nodejs,前端,http,网络协议,网络,node.js
nodejs http 请求头,Nodejs,前端,http,网络协议,网络,node.js

方式二

const http=require('http')

const server=http.createServer((request,response)=>{
    // 实例化url对象
    // let url=new URL('/search?a=100&b=200','http://127.0.0.1:9000')
    let url=new URL(request.url,'http://127.0.0.1')
    console.log("url",url)
    //输出路径
    console.log("url.pathname",url.pathname)
    //输出 keyword 查询字符串
    console.log("url.searchParams.get('keyword')",url.searchParams.get('keyword'))
    response.end('url new')
})

server.listen(9000,()=>{
    console.log("服务已经启动...")
})

nodejs http 请求头,Nodejs,前端,http,网络协议,网络,node.js

nodejs http 请求头,Nodejs,前端,http,网络协议,网络,node.js
nodejs http 请求头,Nodejs,前端,http,网络协议,网络,node.js

http请求练习

按照以下要求搭建 HTTP 服务

请求类型(方法) 请求地址 响应体结果
get /login 登录页面
get /reg 注册页面
const http=require('http')

const server = http.createServer((request,response)=>{
    //获取请求的方法
    let {method} = request
    //获取请求的url路径
    let {pathname}=new URL(request.url,'http://127.0.0.1')
    response.setHeader('content-type','text/html;charset=utf-8')
    //判断
    if(method==='GET'&&pathname==='/login'){
        //登录的情形
        response.end('登录页面')
    }else if(method==="GET"&&pathname==='/reg'){  //register 注册
        response.end('注册页面')
    }else{
        response.end('Not Found')
    }
});

server.listen(9000,()=>{
    console.log("服务已经启动...")
})

nodejs http 请求头,Nodejs,前端,http,网络协议,网络,node.js
nodejs http 请求头,Nodejs,前端,http,网络协议,网络,node.js
nodejs http 请求头,Nodejs,前端,http,网络协议,网络,node.js
nodejs http 请求头,Nodejs,前端,http,网络协议,网络,node.js

设置HTTP响应报文

作用 语法
设置响应状态码 response.statusCode
设置响应状态描述 response.statusMessage (用的非常少)
设置响应头信息 response.setHeader(‘头名’, ‘头值’)
设置响应体 response.write(‘xx’)
response.end(‘xxx’)

状态码

const http=require('http')

const server = http.createServer((request,response)=>{
	//1、设置响应状态码
    response.statusCode=205
    response.end('response')
});

server.listen(9000,()=>{
    console.log("服务已经启动....")
})

nodejs http 请求头,Nodejs,前端,http,网络协议,网络,node.js
2.

const http=require('http')

const server = http.createServer((request,response)=>{
    //1、设置响应状态码
    response.statusCode=205
    response.statusCode=404
    response.end('response')
});

server.listen(9000,()=>{
    console.log("服务已经启动....")
})

nodejs http 请求头,Nodejs,前端,http,网络协议,网络,node.js

响应状态描述

const http=require('http')

const server = http.createServer((request,response)=>{
    //1、设置响应状态码
    // response.statusCode=205
    // response.statusCode=404
    //2、设置响应状态描述
    response.statusMessage='iloveyou';
    response.end('response')
});

server.listen(9000,()=>{
    console.log("服务已经启动....")
})

nodejs http 请求头,Nodejs,前端,http,网络协议,网络,node.js

响应头

const http=require('http')

const server = http.createServer((request,response)=>{
    //1、设置响应状态码
    // response.statusCode=205
    // response.statusCode=404
    //2、设置响应状态描述
    // response.statusMessage='iloveyou';
    //3、响应头
    response.setHeader('content-type','text/html;charset=utf-8')
    response.end('response')
});

server.listen(9000,()=>{
    console.log("服务已经启动....")
})

nodejs http 请求头,Nodejs,前端,http,网络协议,网络,node.js

const http=require('http')

const server = http.createServer((request,response)=>{
    //1、设置响应状态码
    // response.statusCode=205
    // response.statusCode=404
    //2、设置响应状态描述
    // response.statusMessage='iloveyou';
    //3、响应头
    // response.setHeader('content-type','text/html;charset=utf-8')
    response.setHeader('Server','Node.js')
    response.end('response')
});

server.listen(9000,()=>{
    console.log("服务已经启动....")
})

nodejs http 请求头,Nodejs,前端,http,网络协议,网络,node.js

const http=require('http')

const server = http.createServer((request,response)=>{
    //1、设置响应状态码
    // response.statusCode=205
    // response.statusCode=404
    //2、设置响应状态描述
    // response.statusMessage='iloveyou';
    //3、响应头
    // response.setHeader('content-type','text/html;charset=utf-8')
    // response.setHeader('Server','Node.js')
    response.setHeader('myServer','test test test')
    response.end('response')
});

server.listen(9000,()=>{
    console.log("服务已经启动....")
})

nodejs http 请求头,Nodejs,前端,http,网络协议,网络,node.js

const http=require('http')

const server = http.createServer((request,response)=>{
    //1、设置响应状态码
    // response.statusCode=205
    // response.statusCode=404
    //2、设置响应状态描述
    // response.statusMessage='iloveyou';
    //3、响应头
    // response.setHeader('content-type','text/html;charset=utf-8')
    // response.setHeader('Server','Node.js')
    // response.setHeader('myServer','test test test')
    response.setHeader('test',['a','b','c'])
    response.end('response')
});

server.listen(9000,()=>{
    console.log("服务已经启动....")
})

nodejs http 请求头,Nodejs,前端,http,网络协议,网络,node.js

  1. 还可以一起来
const http=require('http')

const server = http.createServer((request,response)=>{
    //1、设置响应状态码
    // response.statusCode=205
    // response.statusCode=404
    //2、设置响应状态描述
    // response.statusMessage='iloveyou';
    //3、响应头
    response.setHeader('content-type','text/html;charset=utf-8')
    response.setHeader('Server','Node.js')
    response.setHeader('myServer','test test test')
    response.setHeader('test',['a','b','c'])
    response.end('response')
});

server.listen(9000,()=>{
    console.log("服务已经启动....")
})

nodejs http 请求头,Nodejs,前端,http,网络协议,网络,node.js

响应体

const http=require('http')

const server = http.createServer((request,response)=>{
    //1、设置响应状态码
    // response.statusCode=205
    // response.statusCode=404
    //2、设置响应状态描述
    // response.statusMessage='iloveyou';
    //3、响应头
    // response.setHeader('content-type','text/html;charset=utf-8')
    // response.setHeader('Server','Node.js')
    // response.setHeader('myServer','test test test')
    // response.setHeader('test',['a','b','c'])
    //4、设置响应体
    response.write('how')
    response.write('are')
    response.write('you')
    //一般设置了响应体之后就不设置end了,但是end只能有一个
    response.end()
});

server.listen(9000,()=>{
    console.log("服务已经启动....")
})

nodejs http 请求头,Nodejs,前端,http,网络协议,网络,node.js

HTTP响应练习

搭建 HTTP 服务,响应一个 4 行 3 列的表格,并且要求表格有隔行换色效果,且点击单元格能高亮显示

const http=require('http')

const server=http.createServer((request,response)=>{
    response.end(`<!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
        <style>
            table{
                cursor: pointer;
            }
            td{
                padding: 20px 40px;
            }
            table tr:nth-child(odd){
                 background-color:pink;
            }
            table tr:nth-child(even){
                background-color: skyblue;
            }
        </style>
    </head>
    <body>
      <table border="1" style="border-collapse: collapse">
        <tr>
            <td></td>
            <td></td>
            <td></td>
        </tr>
          <tr>
              <td></td>
              <td></td>
              <td></td>
          </tr>
          <tr>
              <td></td>
              <td></td>
              <td></td>
          </tr>
          <tr>
              <td></td>
              <td></td>
              <td></td>
          </tr>
      </table>
      <script>
          let tds=document.querySelectorAll('td')
          tds.forEach(item=>{
              item.οnclick=function (){
                  this.style.backgroundColor='lightcyan'
              }
          })
      </script>
    </body>
    </html>
    `)
})

server.listen(9000,()=>{
    console.log("服务已经启动...")
})

nodejs http 请求头,Nodejs,前端,http,网络协议,网络,node.js文章来源地址https://www.toymoban.com/news/detail-830336.html

到了这里,关于Nodejs基础6之HTTP模块的获取请求行和请求头、获取请求体、获取请求路径和查询字符串、http请求练习、设置HTTP响应报文、http响应练习的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • NodeJS入门:常用模块汇总之http模块(1)

    接收html文件、json数据的demo 文件解释: index.html:主页面 about.html:\\\"关于我们\\\"页面 index.js:服务器配置和响应设置 代码: index.html about.html: 简单功能测试 index.js: 创建服务器对象、设置端口、服务器响应后返回一个html标签,让页面显示\\\"good morning\\\" // 引入需要的模块 const

    2024年04月16日
    浏览(25)
  • Nodejs中http 模块介绍以及服务器相关的概念

    什么是客户端、什么是服务器? 在网络节点中,负责消费资源的电脑,叫做 客户端 负责对外提供网络资源的电脑,叫做 服务器 http 模块是 Node.is 官方提供的、用来创建 web 服务器的模块,通过 http 模块提供的 http.createServer() 方法,就能方便的把一台普通的电脑,变成一台 W

    2024年03月23日
    浏览(33)
  • Java获取请求头、参数、路径、

    request.getReader()和request.getParameter(\\\"key\\\") 方法只能读取一次,重复读取会报IO异常 从  ContainerRequestContext   对象 获取请求头、路径、参数  注意:这里MultivaluedMap和map不同,遍历的时候也不同,MultivaluedMap 一个key 可以有多个值 , map一个key 只对应一个值 举个例子: 从 Http

    2023年04月23日
    浏览(31)
  • Caddy反向代理转发修改http请求路径

    Caddy是个非常不错的开源服务器产品,简单易用,自带ssl。只是没啥详细的中文文档,遇到问题只能看官方文档。 记录一下使用Caddy转发http请求的方法。 问题:将http://192.168.1.10:7077/product/*的请求转发到http://192.168.1.12:7078/*。这里其实是两个需求,一个是转发端口,还有个是去

    2024年02月12日
    浏览(33)
  • NodeJS 后端通过Http获取Base64格式数据显示图片 ②〇

    Node.js 是一个javascript运行环境。它让javascript可以开 发后端程序 ,实现几乎其他后端语言实现的所有功能,可以与```PHP、Java、Python、.NET、Ruby等后端语言平起平坐。 Nodejs是基于V8引擎,V8是Google发布的开源JavaScript引擎,本身就是用于Chrome浏览器的JS解释,但是Node之父 Ryan Dah

    2024年02月16日
    浏览(25)
  • python os模块获取文件路径

    1、 # 获取当前工作目录的上一级目录 dir_path = os.path.dirname(os.path.abspath(\\\'.\\\')) 2、获取当前路径: 3、获取当前路径的文件名: file_name = os.path.basename(os.getcwd()) 获取当前路径下所有文件名: file_names = os.listdir(os.getcwd()) 4、字符串正则化 字符串正则化(string normalization)是指将不同

    2024年02月14日
    浏览(28)
  • springmvc 获取项目中的所有请求路径

    springboot/springmvc 获取项目中的所有请求路径 1. 编写业务代码 2. 异常信息 No qualifying bean of type ‘org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping’ available: expected single matching bean but found 3: swagger2ControllerMapping,requestMappingHandlerMapping,controllerEndpointHandlerMapping 原因就

    2024年02月09日
    浏览(31)
  • python 模块requests 发送 HTTP 请求

    一、简介 requests 模块是 python 基于 urllib,采用 Apache2 Licensed 开源协议的 HTTP 库。它比 urllib 更加方便,可以节约我们大量的工作 二、安装 三、方法 requsts.requst(method, url,headers,cookies,proxies,timeout) method:请求方式;字符串类型 url:请求的地址;字符串类型 params:查询参数,g

    2024年02月11日
    浏览(30)
  • vue请求本地路径GET http://localhost:8080/.... 404 (Not Found)

    正在学习vue,将遇到的问题当作笔记写到这里,希望可以帮助有同样问题的同学 在开发过程中通过axios请求本地json数据,首先看一下我的文件结构 报错 GET http://localhost:8080/public/data/nongyeyuanqu.json 404 (Not Found) 查了很多资料,由于版本不同的问题还是没有解决 后来看到一篇帖子

    2024年02月13日
    浏览(39)
  • 【二、http】go的http基本请求设置(设置查询参数、定制请求头)get和post类似

    结果: 结果: 可以看到其中头部信息已经打印出自己增加的部分内容

    2024年02月05日
    浏览(44)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包