nodejs处理http请求实例详解之get和post

目录
  • 前言:http 请求概述
    • Q: 从浏览器输入 url 到页面显示的整个过程?
  • nodejs 处理 get 请求
    • 简单的 demo
    • 测试一下
  • nodejs 处理 post 请求
    • 简单的demo
    • 测试一下
  • 补充:postman
    • postman 的下载
  • 总结

前言:http 请求概述

从一个经典的面试题入手,简单了解下 http 请求:

Q: 从浏览器输入 url 到页面显示的整个过程?

第一步:DNS 解析, 建立 TCP 连接,发送 http 请求,简单来讲就是——

  • 先进行 DNS 解析,即通过域名解析到对应的 ip 地址;
  • 找到 ip 地址后,建立 TCP 连接,即三次握手—— 第一次,客户端询问服务器是否可用; 第二次,服务端告诉客户端自己可用; 第三次,客户端表示知道了,接下来即将访问;
  • 然后再去发送http请求;

第二步:server 端接收到 http 请求,处理并返回;

第三步:客户端接收到返回的数据,处理数据(如渲染页面,执行js)

nodejs 处理 get 请求

简单的 demo

const http = require('http')
const querystring = require('querystring')

// GET
const server = http.createServer((req, res) => {
    console.log('req.method:', req.method) // GET
    const url = req.url // 获取请求的 url
    req.query = querystring.parse(url.split('?')[1]) // 解析 querystring
    res.end(JSON.stringify(req.query)) // 将 querystring 返回
})
server.listen(8000)
console.log('GET OK~~~')

通过 require(‘http’) 获取 Nodejs 原生提供的 http 模块。

通过 http.createServer 创建一个 server。该方法接收一个函数,返回一个 server 对象。

  • req:客户端传过来的信息
  • res: 服务端要返回的数据
  • res.end: 结束并返回数据。只能发送 Buffer 或 String 类型的数据
  • querystring:nodejs 自带的模块。
  • querystring.parse: 将字符串转换为对象。比如:hobby=baba&name=gougou会被转为{"hobby":"baba","name":"gougou"}
  • server.listen(path, [callback]):在指定路径监听。 异步。

测试一下

我们可以通过 node 文件名 的方式运行我们的代码:

然后可以去浏览器测试一下:访问localhost:8000,然后模拟 get 请求,看是否能返回 querystring 的内容。

再看下终端:

nodejs 处理 post 请求

简单的demo

const http = require('http')

const server = http.createServer((req, res) => {
    console.log('req content-type:', req.headers['content-type'])
    let postData = '' // 存放客户端传来的数据
    req.on('data', chunk => {
        console.log('chunk', chunk) // 二进制格式
        postData += chunk.toString() // 将二进制格式转成字符串格式,拼接到 postData 上
    })
    req.on('end', () => {
        console.log('postData:', postData)
        res.end('芽~~~~~~~狗狗来啦!')
    })
})
server.listen(8000)
console.log('POST OK~~~')
  • req.on('data', callback):接受客户端传来的数据,以数据流的方式。
  • chunk:二进制格式,可通过toString转成字符串格式。

测试一下

post 请求我们可以使用 postman 工具来调试。如图(使用方式见图就一目了然了,就不一一赘述了):

点击 send 发送请求后,可以看下终端:

补充:postman

Postman 是一款常用的接口调试工具,可以发送几乎所有类型的 HTTP 请求。
我们在学习和使用 nodejs 的过程中,可以借助它来调试接口。

postman 的下载

可以在 chrome 上安装扩展程序(前提是能连接到谷歌商店)

可以下载安装 postman 客户端工具。

总结

到此这篇关于nodejs处理http请求实例详解之get和post的文章就介绍到这了,更多相关nodejs处理http请求get和post内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • nodejs使用http模块发送get与post请求的方法示例

    本文实例讲述了nodejs使用http模块发送get与post请求的方法.分享给大家供大家参考,具体如下: GET请求 var http = require('http'); var querystring = require('querystring'); var data = { a: 123, time: new Date().getTime()};//这是需要提交的数据 var content = querystring.stringify(data); var options = {

  • nodejs 使用http进行post或get请求的实例(携带cookie)

    安装http nmp install http 函数封装(可直接拿去进行使用) var http = require('http'); function nodePostGetRequest(HOST, PORT, method, bodydata, callBackFunction, path, cookie) { //把将要发送的body转换为json格式 var body = bodydata; var bodyString = JSON.stringify(body); //http 头

  • 从零开始学习Node.js系列教程一:http get和post用法分析

    本文实例讲述了Node.js中http get和post用法.分享给大家供大家参考,具体如下: httpserverrequestget.js /* 获取GET请求内容 由于GET请求直接被嵌入在路径中,URL是完整的请求路径,包括了?后面的部分,因此你可以手动解析后面的内容作为GET请求的参数. node.js中url模块中的parse函数提供了这个功能. */ var http = require('http'); var url = require('url'); var util = r

  • Node.js中的HTTP Server对象与GET、POST请求

    上一博客学习了请求与响应,2次读2次写,但有一个问题就是客户端写入的时候怎么知道请求到达.所以HTTP Server对象出现了.它提供了实现HTTP服务器的基本框架.它可以监听端口的底层套接字和接收请求,然后发送响应给客户端连接的处理程序. 它提供了一下几个事件: request:当服务器收到客户端请求时触发.例如:function callback(request,response){}. connection:当一个新的TCP流建立时触发.例如:function callback (sock

  • nodejs处理http请求实例详解之get和post

    目录 前言:http 请求概述 Q: 从浏览器输入 url 到页面显示的整个过程? nodejs 处理 get 请求 简单的 demo 测试一下 nodejs 处理 post 请求 简单的demo 测试一下 补充:postman postman 的下载 总结 前言:http 请求概述 从一个经典的面试题入手,简单了解下 http 请求: Q: 从浏览器输入 url 到页面显示的整个过程? 第一步:DNS 解析, 建立 TCP 连接,发送 http 请求,简单来讲就是—— 先进行 DNS 解析,即

  • JSONP跨域请求实例详解

    JSOP简介 JSONP(JSON with Padding)是JSON的一种"使用模式",可用于解决主流浏览器的跨域数据访问的问题.由于同源策略,一般来说位于 server1.example.com 的网页无法与不是 server1.example.com的服务器沟通,而 HTML 的<script> 元素是一个例外.利用 <script> 元素的这个开放策略,网页可以得到从其他来源动态产生的 JSON 资料,而这种使用模式就是所谓的 JSONP.用 JSON

  • JS JSOP跨域请求实例详解

    在项目开发中遇到跨域的问题,一般都是通过JSONP来解决的.但是JSONP到底是个什么东西呢,实现的原理又是什么呢.在项目的空闲时间可以好好的来研究一下了. 1.什么是JSONP? 要了解JSONP,不得不提一下JSON,那么什么是JSON? JSON is a subset of the object literal notation of JavaScript. Since JSON is a subset of JavaScript, it can be used in the langu

  • Vue Ajax跨域请求实例详解

    一.设置config/index.js || proxyTable添加 proxyTable: { '/api': { target: 'http://192.168.48.239:8080/ydzl', changeOrigin: true, pathRewrite: { '^/api': '' } } 二.mian.js 添加vue全局属性 Vue.prototype.HOST = '/api' 三.如果是post的话 1.修改数据格式 transformRequest: [function

  • nodejs中模块定义实例详解

    本文实例讲述了nodejs中模块定义方法.分享给大家供大家参考,具体如下: 1.模块定义 nodejs所谓的模块就是一个文件!一个.js文件就是一个nodejs的模块,模块与文件是一一对应的,那么引用模块就是require('文件路径'). 如: var circle = require('./circle.js'); console.log( 'The area of a circle of radius 4 is ' + circle.area(4)); 这个取名为foo.js var PI

  • nodejs基础之多进程实例详解

    本文实例讲述了nodejs基础之多进程.分享给大家供大家参考,具体如下: Node.js 多进程 我们都知道 Node.js 是以单线程的模式运行的,但它使用的是事件驱动来处理并发,这样有助于我们在多核 cpu 的系统上创建多个子进程,从而提高性能. 每个子进程总是带有三个流对象:child.stdin, child.stdout 和child.stderr.他们可能会共享父进程的 stdio 流,或者也可以是独立的被导流的流对象. Node 提供了 child_process 模块来创建子进程

  • nginx处理http请求实例详解

    本文在这基础上分析nginx服务器收到http请求行.请求头部后,http框架是如何调度各个http模块共同完成这个http请求.例如: http框架调度静态模块,获取服务器目录下的某个html页面返回给客户端: 或者http框架调度access权限访问模块,判断这个客户端是否有权限访问服务器. 一.event事件与http框架的交互 在接收完http请求行.http请求头部后,会调用ngx_http_process_request这个函数开始处理http请求.因为一个http请求由11个处理阶

  • 微信小程序 封装http请求实例详解

    微信小程序 封装http请求 最近看了一下微信小程序,大致翻了一下,发现跟angular很相似的,但是比angular简单的很多具体可参考官方文档 https://mp.weixin.qq.com/debug/wxadoc/dev/framework/app-service/page.html?t=2017112 下面将封装http请求服务部分的服务以及引用部分 // 本服务用于封装请求 // 返回的是一个promisepromise var sendRrquest = function (ur

  • Java Web请求与响应实例详解

    Servlet最主要作用就是处理客户端请求并作出回应,为此,针对每次请求,Web容器在调用service()之前都会创建两个对象,分别是HttpServletRequest和HttpServletResponse.其中HttpServletRequest封装HTTP请求消息,HttpServletResponse封装HTTP响应消息.需要注意的是,Web服务器运行过程中,每个Servlet都会只创建一个实例对象,不过每次请求都会调用Servlet实例的service(ServletRequest

  • java 请求跨域问题解决方法实例详解

    java 请求跨域问题解决方法实例详解 新建Util类,在Util中添加下面方法: /* * response请求跨域公共设置 */ public static HttpServletResponse SetHttpServletResponse( HttpServletResponse response) { response.setHeader("Access-Control-Allow-Origin", "*"); response.setHeader(&qu

随机推荐