学习目标
- httprouter
- api参数
- url参数
- 表单参数
- 路由组管理(同业务放同组,方便管理)
- 路由组拆分和注册(业务的变化带来的技术变更)
httprouter
https://github.com/julienschmidt/httprouter
HttpRouter is a lightweight high performance HTTP request router
(Web Frameworks based on HttpRouter-> gin )
api 参数
通过gin框架搭建web服务,获取api上的一些参数
通过浏览器访问地址,返回的结果如下
url 参数
例如: http://localhost:8080/user?name=lisi
如何获取name的参数
name有数据的时候:
name 没有传递参数默认的数值:
表单参数
登录时候,用户名/密码,提交参数给服务端,一般情况我们采用POST方式
- HTML 创建一个表单
- 启动gin框架Web服务
- 用户提交post请求到Web服务(获取参数---> 业务处理 ---> 返回结果)
1、打开index.html 后(浏览器)
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
</head>
<body>
<form action="http://localhost:8080/form" method="post" action="application/x-www-form-urlencoded">
用户名:<input type="text" name="username" placeholder="请输入你的用户名"> <br>
密 码:<input type="password" name="password" placeholder="请输入你的密码"> <br>
<input type="submit" value="提交">
</form>
</body>
</html>
2、启动Go Web服务
3、点击提交按钮后的结果
路由组管理
router groups为了方便管理一些相关的url(某一类)
- 商品操作url
- 订单操作url
- 登录操作url
业务相关的内容,我们可以放在一个组管理
浏览器请求方式1:
浏览器请求方式2:
路由拆分和注册
从简单到复杂业务的演进,同大家看下演进路线,重点提供大家一种解决问题思路。
demo1
下面最基础的gin路由注册方式,适用于路由条目比较少的简单项目或者项目demo。
demo2
当项目的规模增大后就不太适合继续在项目的main.go文件中去实现路由注册相关逻辑了,把路由部分的代码都拆分出来,形成一个单独的文件或包:在routers.go文件中定义并注册路由信息
demo3
当我们的业务规模继续膨胀,单独的一个routers文件或包已经满足不了我们的需求了
demo4
不同的业务代码拆分成不同的APP,在项目目录下单独定义一个app目录,用来存放我们不同业务线的代码文件,这样就很容易进行横向扩展。