web 编程
✍️ 正文
- 首先输入域名,访问域名服务器,返回域名对应的ip地址
- DNS服务器:域名服务器将域名和ip地址绑定,你拿域名去域名服务器获得该网站的ip地址。最后用ip地址去访问网页。 所以dns是可以缓存到本机上面的。 又因为域名ip会改变,所以缓存在本机上ip地址不可用时,再次去域名服务器获得ip并刷新缓存。
- ip+port访问web服务器(http服务器)访问网页数据
- URL Unique Resource Location:统一资源定位符,唯一标识一个数据资源信息。可以理解为网络文件路径。
- 协议:https,ftp
- 域名或ip
- 路径名
- 文件名
- http协议
- 应用层协议:搭建在数据链路层,ip,tcp协议之上
- SSL、TLS协议:https协议,相对于http,不再是明文传输
- http请求包 Request
- 请求行
- 请求方法
- GET:获取数据内容
- POST:发送请求的同时,附带数据
- 请求文件 URL
- 以/开始,根目录
- 协议版本
- HTTP/1.1
- 以空格隔开,以/r/n结尾
- 请求方法
- 请求头
- 头部字段名称:值/r/n 。以该单位成组出现
- Host:ip地址
- Connection:keep-alive
- Cache-Control:max-age=0
- 空行 /r/n :代表http请求头结束
- 请求包体
- 请求行
- http应答包 Response
- 应答行
- 以空格隔开
- HTTP/1.1 协议
- 状态 200
- 404
- 说明 OK
- Not Found
- 空行/r/n
- 应答头
- 以key:value的形式
- Date:
- Content-length:
- Content-Type
- 应答包题
- 应答行
- web框架
-
框架功能
-
支持RESTful api
-
渲染:
- 模板
- 定义模板 (写一个模板文件 .tmpl) -> 解析模板 -> 渲染模板
- 单模板
- 模板继承和模板嵌套:根模板、块模板
- 共同的内容用:根模板 base template
- 特有的用:块模板 block template
- 模板自定义
- 修改默认模板标识符{{ }}
- XML、YAML渲染
- protobuf
- 模板
-
静态文件处理
-
获取参数
- 获取form参数、获取json参数、获取path参数
- 参数绑定:json数据绑定给结构体
-
文件上传
-
重定向:http重定向(外部网站)、路由重定向(内部其它路由)
-
路由功能 router。使用了httprouter这个库
- 普通路由:请求的路径对应处理的函数。
- GET、POST、DELETE、PUT、PATCH、HEAD、OPTIONS、CONNECT、TRACE
- Any:switch ... case ...
- NoRouter
- 路由组:将一类路由(同一目录下的路由的子路由)分为一组。类似于作用域和模板嵌套
- 路由组嵌套
- 普通路由:请求的路径对应处理的函数。
-
中间件(hook 钩子函数):如,登陆认证、权限校验、数据分页、记录日志、耗时统计
-
定义中间件
-
注册中间件
-
c.Next() 在中间件内部执行下一个处理函数后返回
-
c.Abort() 阻止调用后续的处理函数,但是本处理函数会运行完成
- 如果本处理函数也不想继续,直接return
-
r.Use() 全局注册中间件
-
为某个指定的路由注册
-
为路由组注册
-
跨中间件的传值和取值:
- c.Set()
- c.Get()
-
auth中间件,一般用闭包
-
-
运行多个服务 server,多线程
-
-
实例:--------
-
gin库,博客
- web服务器的工作方法
- DNS服务器
- http
- URL
- http请求协议
- http应答协议
- http web服务器
- http模拟客户端
- 渲染:
- 模板文件夹
- 自定义模板函数
- web服务器的工作方法
-