一、关于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
协议 + 域名 + 端口号 + 请求路径 + 参数构成的
- 通过
req.url
获取 请求路径 + 参数
/login?goods1=0001&goods2=0002
- 通过
?
来分割字符串,使请求路径和参数分离
// 分离后,[1]为参数
// 获得 goods=0001&goods2=0002
let queryStr = req.url.split('?')[1]
- 通过
&
来分割字符串,使每个参数分离
// 获取: goods=0001 和 goods2=0002
let queryArr = queryStr.split('&')
- 循环数组,使每个参数,通过
=
分割,将其转换成对象的形式
// 获得: 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>