Go-HTTP框架设计实现概述

1.再谈HTTP协议

第一个大规模使用:HTTP0.9 三十多年了
HTTP:超文本传输协议(Hypertext Transfer Protocal)
为什么是超文本:因为图片、音乐、视频是文本的扩充
为什么需要协议:约定俗称的规则(像说话)有边界

协议里有什么:

1.请求行/状态行

方法名 URL 协议版本/协议版本 状态码 状态码描述
1xx:信息类
2xx:成功
3xx:重定向
4xx:客户端错误
5xx:服务端错误

2.请求头/响应头
3.请求体/响应体

DEMO:

package main

import (
	"context"
	"code.byted.org/middleware/hertz/pkg/app"
	"code.byted.org/middleware/hertz/pkg/server"

)
func main() {
	h := server.New()
	h.POST("/sis", func(c context.Context, ctx *app.requestContext) {//post方法 url 为/sis
		ctx.Data(200, "text/plain;charset=utf-8", []byte("ok"))//返回ok
	})
	h.Spin()
}

HTTP1:队头阻塞 传输效率低 明文
HTTP2:多路复用 头部压缩 二进制协议
QUIC:基于UDP 解决了队头阻塞 加密 快启动

应用层设计:提供合理的API:ctx.Body()而不是ctx.BodyA()
可理解、简单、冗余、兼容、可测、可见
中间件设计:洋葱模型 日志-Metrics-Biz Handler(为了配合Handler实现一个完整的请求处理生命周期 有预处理 有后处理 可以注册多中间件)
在这里插入图片描述路由设计
在这里插入图片描述协议层设计抽象出合适的接口
网络层设计:网络模型

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

MatsumotoChrikk

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值