【go项目01_学习记录03】

news2024/11/23 0:10:21

学习记录

  • 1 路由http.ServeMux
    • 1.1 查看HandleFunc方法源码
    • 1.2 查看ListenAndServe方法源码
    • 1.3 重构:使用自定义的 ServeMux
    • 1.4 http.ServeMux 的局限性
      • 1.4.1 URI 路径参数
      • 1.4.2 请求方法过滤
      • 1.4.3 不支持路由命名
    • 1.5 http.ServeMux 的优缺点

1 路由http.ServeMux

1.1 查看HandleFunc方法源码

在这里插入图片描述

  • pattern 是 URI 的规则,例如 / 或者 about
  • handler 是供调用的函数

1.2 查看ListenAndServe方法源码

在这里插入图片描述
handler 通常为 nil,此种情况下会使用 DefaultServeMux

1.3 重构:使用自定义的 ServeMux

在这里插入图片描述

1.4 http.ServeMux 的局限性

http.ServeMux 在 goblog 中使用,会遇到以下几个问题:

  • 不支持 URI 路径参数
  • 不支持请求方法过滤
  • 不支持路由命名

1.4.1 URI 路径参数

在这里插入图片描述
在这里插入图片描述

r.URL.Path:r是http.Request类型的参数,表示HTTP请求。r.URL是一个url.URL类型的结构体,其中包含了请求的URL信息。r.URL.Path表示请求的路径部分,即URI路径。
strings.SplitN(r.URL.Path, “/”, 3):strings.SplitN函数用于按照指定的分隔符将字符串分割成多个子串,并返回一个切片。在这里,我们使用"/“作为分隔符,将URI路径按”/"进行分割。第二个参数3表示最多分割成3个子串。这里会将URI路径分割成三部分。
[2]:表示从分割后的切片中获取第三个元素,索引从0开始。在这里,我们获取了分割后的切片中的第三个元素,即文章的ID。
id := strings.SplitN(r.URL.Path, “/”, 3)[2]:将获取到的文章ID赋值给变量id。这样就可以从URI路径参数中提取出文章的ID。
fmt.Fprint(w, “文章ID:”+id):最后,使用fmt.Fprint函数将文章ID作为字符串拼接到输出流w(http.ResponseWriter)中,返回给客户端。

1.4.2 请求方法过滤

无法直接从路由上区分 POST 或者 GET 等 HTTP 请求方法,只能手动判断
在这里插入图片描述
CURL测试:
在这里插入图片描述

1.4.3 不支持路由命名

路由命名是一套允许我们快速修改页面里显示 URL 的机制。
例如URL 是

http://example.com/books/{id}

项目随着时间的推移,变得非常巨大,在几十个页面里都存在这个 URI 。突然有个需求或者有其他不可控因素,要求我们修改链接为:

http://example.com/novels/{id}
那么我们只能到这个几十个页面里去修改。

使用路由命名的话,我们为 books/{id} 这个路由命名为 articles.show,几十个页面在编码时,都使用这个路由名称而不是具体的 URI,遇到修改的需求时,我们只需在定义路由这一个地方修改即可。

目前 http.ServeMux 不支持此功能。

1.5 http.ServeMux 的优缺点

在这里插入图片描述


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1648125.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

当下大模型的趋势以及如何让学习大模型?

当下大模型的趋势 近年来,随着计算能力的提升、数据量的增加以及算法的进步,大模型在人工智能领域展现出了显著的发展趋势。以下是截至2024,大模型发展的一些关键趋势: 参数规模持续增长:从OpenAI的GPT-3的1750亿参数…

森林消防的新利器:高扬程水泵的应用与优势/恒峰智慧科技

森林是地球上的绿色肺叶,保护森林安全对于维护生态平衡和人类生存环境至关重要。在森林消防领域,高效、快速的灭火设备是保障森林安全的重要武器。近年来,高扬程水泵作为一种新型的消防设备,在森林消防中发挥了重要作用。本文将详…

python多标签图像分类的图片相册共享交流系统vue+django

建立图片共享系统,进一步提高用户对图片共享信息的查询。帮助用户和管理员提高工作效率,实现信息查询的自动化。使用本系统可以轻松快捷的为用户提供他们想要得到的图片共享信息。 根据本系统的基本设计思路,本系统在设计方面前台采用了pytho…

IPO压力应变桥信号处理系列隔离放大器 差分信号隔离转换0-10mV/0-20mV/0-±10mV/0-±20mV转4-20mA/0-5V/0-10V

概述: IPO压力应变桥信号处理系列隔离放大器是一种将差分输入信号隔离放大、转换成按比例输出的直流信号混合集成厚模电路。产品广泛应用在电力、远程监控、仪器仪表、医疗设备、工业自控等行业。该模块内部嵌入了一个高效微功率的电源,向输入端和输出端…

ubuntu20.04 手动配置docker下autoware.universe环境

使用docker手动安装autoware环境,参考文章,中间踩过很多坑,特此记录一下。我电脑配置如下,有同样配置的小伙伴可以参考安装: ubuntu20.04cuda: cuda-11.6ros2: foxy 一、手动安装ros2、cuda等 1.1 ROS2安装 推荐使用…

04-23 周二 shell环境下读取使用jq 读取json文件

04-23 周二 shell环境下读取使用jq 读取json文件 时间版本修改人描述04-23V0.1宋全恒新建文档 简介 工具列表 Shell脚本处理JSON数据工具jq jshon是另外一个读取json数据的工具 而且其支持XML和YAML格式文件 linux shell环境下处理yml文件 #!/bin/bash# 加载shyaml库 . /…

在java类前添加上文档注释

第一步: 第二步 第三步 将下面代码粘上 /** *Author Lnn *Date ${DATE}/${TIME} *ClassName ${NAME} *Description */

限量背包问题

问题描述 限量背包问题:从m个物品中挑选出最多v个物品放入容量为n的背包。 问题分析 限量背包问题,可以用来解决许多问题,例如要求从n个物品中挑选出最多v个物品放入容量为m的背包使得背包最后的价值最大,或者总共有多少种放法…

先进制造业数字化转型,为什么基于传统存储无法完成?

本文是 XSKY 智能存储方案助力先进制造数字化转型系列文章中的第一篇,重点分享先进制造行业数字化转型过程中,对于数据存储的需求,以及为何传统存储架构无法很好满足这些需求。 随着智能制造的发展,自动化、信息化、智能化等技术…

unity基础(二)

debug方法 Debug.Log(" 一般日志 ");Debug.LogWarning(" 警告日志 ");Debug.LogError(" 错误日志 ");// Player Informationstring strPlayerName "Peter";int iPlayerHpValue 32500;short shPlayerLevel 10;long lAdvantureExp 1…

k8s部署Kubeflow v1.7.0

文章目录 环境介绍部署访问kubeflow ui问题记录 环境介绍 K8S版本:v1.23.17,需要配置默认的sc 参考:https://github.com/kubeflow/manifests/tree/v1.7.0 部署 #获取安装包 wget https://github.com/kubeflow/manifests/archive/refs/tag…

【方法】如何创建RAR格式压缩文件?

为了方便存储或者传输文件,我们经常会把文件打包成不同格式的压缩包,那如果想创建的是RAR格式的压缩包,要如何做呢? RAR是WinRAR软件独有的压缩格式,所以我们可以通过WinRAR软件来创建RAR格式压缩包。下面分享两种创建…

5000亿参数来了:微软将推出 MAI-1 模型硬刚谷歌和OpenAI|TodayAI

美国的科技巨头微软公司,正在积极扩展其人工智能(AI)技术的领域。最新消息显示,微软将推出一款名为MAI-1的全新AI模型,其规模巨大,预计将拥有5000亿个可调参数。这一开发工作由Inflection AI的CEO穆斯塔法苏…

cmake进阶:变量的作用域说明三(从函数作用域方面)

一. 简介 前一篇文章从函数作用域方面学习了 变量的作用域。文章如下: cmake进阶:变量的作用域说明一(从函数作用域方面)-CSDN博客cmake进阶:变量的作用域说明二(从函数作用域方面)-CSDN博客…

在Node.js(express 框架)中使用 JWT 进行身份认证

文章目录 一、JWT 认证机制二、安装 JWT 相关的包三、基本使用1、生成 JWT 字符串2、添加中间件,解析 JWT 字符串3、获取管理员信息(admin) 一、JWT 认证机制 JWT 认证机制(图片来源于网络,侵权删除): 关于 JWT 原理可…

Wish、Newegg、Allegro卖家如何做测评补单 快速提升产品权重与销量

大部分主流平台卖家都会使用测评补单来增加产品权重、提高销量。经常会有一些平台的卖家咨询我其他平台能否像亚马逊一样通过测评补单来提升曝光。 其实大部分跨境电商都是可以通过补单来增加店铺权重提升产品排名。其实亚马逊相对来说风控是最严的,风控点多达几十…

Pytorch基础:内置类type的用法

相关阅读 Pythonhttps://blog.csdn.net/weixin_45791458/category_12403403.html?spm1001.2014.3001.5482 在python中,一切数据类型都是对象(即类的实例),包括整数、浮点数、字符串、列表、元组、集合、字典、复数、布尔、函数、…

Telnet的三种配置和SSH配置

Telnet的三种配置 实验配置思路: 配置接口IP地址: R1——配置接口IP地址 R2——配置接口IP地址 认证模式为none的配置 R1——认证模式配置为none R2——测试Telnet连接R1设备 认证模式为passwrd的配置 R1——认证模式配置为password R2——测试Telnet连…

C语言例题35、判断一个数是否是回文数

题目要求&#xff1a;输入一个5位数&#xff0c;判断它是不是回文数。即12321是回文数 #include <stdio.h>int main() {int x;int ge, shi, qian, wan;printf("请输入一个5位数&#xff1a;");scanf("%d", &x);ge x % 10; //个sh…

嵌入式硬件中PCB走线与过孔的电流承载能力分析

简介 使用FR4敷铜板PCBA上各个器件之间的电气连接是通过其各层敷着的铜箔走线和过孔来实现的。 由于不同产品、不同模块电流大小不同,为实现各个功能,设计人员需要知道所设计的走线和过孔能否承载相应的电流,以实现产品的功能,防止过流时产品烧毁。 文中介绍设计和测试FR4敷…