Express ---- 3. 获取GET请求参数

一、关于get请求

一般在网站开发中,get都用作数据获取和查询,类似于数据库中的查询操作,当服务器解析前台资源后即传输相应内容;而查询字符串是在URL上进行的,形如:

http://localhost:8080/login?goods1=0001&goods2=0002

二、获取前台get请求

2.1、自己解析 get 请求

一个URL的get请求,是由

http://localhost:8080/login?goods1=0001&goods2=0002

协议 + 域名 + 端口号 + 请求路径 + 参数构成的

  1. 通过req.url获取 请求路径 + 参数
/login?goods1=0001&goods2=0002
  1. 通过 ?来分割字符串,使请求路径和参数分离
// 分离后,[1]为参数
// 获得 goods=0001&goods2=0002
let queryStr = req.url.split('?')[1] 
  1. 通过 &来分割字符串,使每个参数分离
// 获取: goods=0001 和 goods2=0002
let queryArr = queryStr.split('&')
  1. 循环数组,使每个参数,通过=分割,将其转换成对象的形式
// 获得: obj = { goods: '0001', goods2: '0002' }
let obj = {}
queryArr.forEach(v => {
  let str = v.split('=')
  let name = str[0]
  let value = str[1]
  obj[name] = value
})
// 拿到这两个值
console.log(obj.goods)  
console.log(obj.goods2)

所以总体过程为:

// get 搜索
app.get('/search', (req, res) => {
  let queryStr = req.url.split('?')[1]
  let queryArr = queryStr.split('&')
  let obj = {}
  queryArr.forEach(v => {
    let str = v.split('=')
    let name = str[0]
    let value = str[1]
    obj[name] = value
  })
  console.log(obj)

  res.json(req.query)
})

2.2、使用express封装的query获取参数

通过req.query可以获得用户发送的get请求,之后通过node操作将相应数据返回给用户。

如果发送的是:

http://localhost:8080/login?goods1=0001&goods2=0002

响应的话则通过:

req.query

他会获取到全部数据,或

req.query.goods1
req.query.goods2

来单独或去每一个数据。总之不同的需求对应不同的业务,大家按自己的需要来获取;

三、实例

下面通过一个实例来对获取get参数进行一个总结:

HTML:

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>搜索首页</title>
</head>
<body>
  
  <form action="/search" method="GET">
    <input type="text" name="username">
    <input type="text" name="password">
    <input type="submit" value="搜索">
  </form>

</body>
</html>

NODE:

const express = require("express");
var app = express();

app.get('/search', (req, res) => {
  let queryStr = req.url.split('?')[1]
  let queryArr = queryStr.split('&')
  let obj = {}
  queryArr.forEach(v => {
    let str = v.split('=')
    let name = str[0]
    let value = str[1]
    obj[name] = value
  })
  console.log(obj)

  res.json(req.query)
})

app.listen(8080);

使用ajax也是一样的

<script src="/javascripts/jquery-3.4.1.js"></script>
<script>
let httpUrl = '/search?searchKey1=神'
$.get(httpUrl).then(res => {
 res.forEach(v => {
   $('body').append("<p>" + v.name + "</p>")
 })
})
</script>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值