当前位置: 首页 > article >正文

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实现一个完整的请求处理生命周期 有预处理 有后处理 可以注册多中间件)
在这里插入图片描述路由设计
在这里插入图片描述协议层设计抽象出合适的接口
网络层设计:网络模型


http://www.kler.cn/a/385599.html

相关文章:

  • [SWPUCTF 2022 新生赛]Power! 反序列化详细题解
  • 准确--FastDFS快速单节点部署
  • 数据分析那些事儿——时间片轮转实验
  • Django 详细入门介绍
  • 动手学深度学习68 Transformer
  • 基于STM32的智能充电桩:集成RTOS、MQTT与SQLite的先进管理系统设计思路
  • Redis6:短信登录
  • 【Mysql NDB Cluster 集群(CentOS 7)安装笔记一】
  • 高级java每日一道面试题-2024年10月31日-RabbitMQ篇-RabbitMQ中vhost的作用是什么?
  • CSS:基础选择器,文字控制属性(HTML)
  • docker快速安装与配置mongoDB
  • 小型的网站服务器该如何选择配置?
  • java常用技术总结
  • vue3中利用路由信息渲染菜单栏
  • 动手学深度学习9.8. 束搜索-笔记练习(PyTorch)
  • 图像手动标注-labelme+yolo格式导出
  • 开源模型应用落地-glm模型小试-glm-4-9b-chat-压力测试(六)
  • 自动化测试工具Ranorex Studio(二十六)-对象库设置对话框
  • Python实战:调用淘宝API以抓取商品页面数据
  • 易考八股文之docker常用命令
  • 【Flutter 内嵌 android 原生 View以及相互跳转】
  • ELK实现前台单显示ip/host等日志信息
  • 向日葵远程桌面Visual Studio白屏
  • 如何在Typora中使用copilot
  • HarmonyOS NEXT应用元服务开发Intents Kit(意图框架服务)本地搜索方案概述
  • 【已解决】Windows11 24H2 (家庭版)无法访问无密码SMB共享的问题;