返回顶部
首页 > 资讯 > 精选 >如何在 Go julienschmidt/httprouter 中嵌套路由器?
  • 307
分享到

如何在 Go julienschmidt/httprouter 中嵌套路由器?

go语言 2024-02-09 05:02:50 307人浏览 安东尼
摘要

PHP小编鱼仔为您带来一篇关于在Go语言中使用julienschmidt/Httprouter嵌套路由器的简洁指南。julienschmidt/httprouter是一个轻量级的高性能

PHP小编鱼仔为您带来一篇关于在Go语言中使用julienschmidt/Httprouter嵌套路由器的简洁指南。julienschmidt/httprouter是一个轻量级的高性能HTTP请求路由器,它可以帮助我们更好地组织和管理路由。本文将详细介绍如何在Go语言中使用julienschmidt/httprouter实现嵌套路由器的功能,以便更好地满足复杂的路由需求。无论您是初学者还是有经验的开发者,本文都将为您提供简单易懂的步骤和示例代码,帮助您轻松掌握嵌套路由器的使用技巧。让我们一起开始吧!

问题内容

我想从我的服务公开以下 url:

get /api/foo
get /api/bar

我还想将其构造为嵌套在另一个路由器中的路由器。顶级路由器将匹配对 /api 的所有请求,并使用嵌套路由器为它们提供服务,该嵌套路由器将匹配对 /foo/bar 的请求。基本上,命名空间。

我可以只有一个路由器,并为两条路由提供 /api 前缀:

router.get("/api/foo", apifoo)
router.get("/api/bar", apibar)

但我希望为 /api 前缀内的所有路由使用单个路由器,以便我可以通过单个函数调用向它们添加适当的中间件

这是我尝试过的:

package main

import (
    "log"
    "net/http"

    "GitHub.com/julienschmidt/httprouter"
)

func apiFoo(w http.ResponseWriter, r *http.Request) {}
func apiBar(w http.ResponseWriter, r *http.Request) {}

func main() {
    api := httprouter.New()
    api.HandlerFunc(http.MethodGet, "/foo", apiFoo)
    api.HandlerFunc(http.MethodGet, "/bar", apiBar)

    router := httprouter.New()
    router.Handler(http.MethodGet, "/api", api)

    log.Fatal(http.ListenAndServe(":8080", router))
}

但是,访问 http://localhost:8080/api/foo 或 http://localhost:8080/api/bar 时找不到 404

我原以为嵌套路由器会起作用,因为路由器实现了 http.handler 接口。我错过了什么?

解决方法

httprouter 不会连接路径,所以你不能那样做。两个路由器只会检查请求路径并采取相应的行动。

有一个 7 年的公开拉取请求,可以实现它。你可以看看那里并自己实现类似的逻辑,PR 基于连接路径。也许你可以为此编写一个小辅助函数。

如果您愿意切换路由器软件包,您可以考虑替代方案,例如 chi,支持路由器组。

以上就是如何在 Go julienschmidt/httprouter 中嵌套路由器?的详细内容,更多请关注编程网其它相关文章!

--结束END--

本文标题: 如何在 Go julienschmidt/httprouter 中嵌套路由器?

本文链接: https://lsjlt.com/news/562208.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • 如何在 Go julienschmidt/httprouter 中嵌套路由器?
    php小编鱼仔为您带来一篇关于在Go语言中使用julienschmidt/httprouter嵌套路由器的简洁指南。julienschmidt/httprouter是一个轻量级的高性能...
    99+
    2024-02-09
    go语言
  • Vue中如何使用嵌套路由
    今天就跟大家聊聊有关Vue中如何使用嵌套路由,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。解决方案使用动态路由新建home.vue作为子页面组件&l...
    99+
    2024-04-02
  • Vue.js 中如何使用嵌套路由
    本篇文章给大家分享的是有关 Vue.js 中如何使用嵌套路由,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。用 Vue CLI 进行设置如果尚未...
    99+
    2024-04-02
  • vue嵌套路由如何定义
    在vue中定义嵌套路由的方法:1.新建项目,引入vue和vue-router;2.使用Vue.use方法注册路由;3.引入home和game组件;4.使用const routes语句定义嵌套路由;具体步骤如下:首先,在新建一个html项目,...
    99+
    2024-04-02
  • vue-router中如何使用嵌套路由
    vue-router中如何使用嵌套路由,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。模板抽离我们已经学习过了Vue模板的另外定义形式,使用...
    99+
    2024-04-02
  • 如何在 Go 中测试嵌套输入
    php小编柚子为您介绍如何在 Go 中测试嵌套输入。在编写 Go 代码时,经常会遇到需要处理嵌套输入的情况,例如嵌套的 JSON 数据或多维数组。如何有效地测试这些嵌套输入是一个关键问...
    99+
    2024-02-14
  • vue中嵌套路由与404重定向如何实现
    这篇文章将为大家详细讲解有关vue中嵌套路由与404重定向如何实现,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。具体如下:第一部分: vue嵌套路由嵌套路由是什么?嵌套路...
    99+
    2024-04-02
  • angularjs中ui-router如何实现路由的二级嵌套
    这篇文章主要为大家展示了“angularjs中ui-router如何实现路由的二级嵌套”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“angularjs中ui-r...
    99+
    2024-04-02
  • 如何在Golang中嵌套 interface
    今天就跟大家聊聊有关如何在Golang中嵌套 interface,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。什么是golanggolang 是Google开发的一种静态强类型、编译...
    99+
    2023-06-14
  • 如何在Go语言中实现路由的动态路由匹配
    Go语言是一门快速、高效、安全、并发的编程语言,被越来越多的开发者广泛应用于Web开发中。在Web应用程序中,路由是非常重要的一环,它的作用是将请求分发到不同的处理器函数中。在此基础上,动态路由匹配更是一种灵活、高效的路由实现方式。本文将介...
    99+
    2023-12-17
    Go语言 路由 动态匹配
  • 如何在Flutter中嵌套Android布局
    目录效果开发 总结 说明 效果 本文具体demo效果如下 开发 1.首先创建flutter项目,在项目中定义好flutter需要展示布局: @override Wid...
    99+
    2024-04-02
  • 如何在 Go 中实现基于路径的 HTTP 路由?
    在 Web 开发中,路由是非常重要的一部分。它是用于处理用户请求并将其路由到正确的处理程序的机制。在 Go 语言中,我们可以使用 net/http 包来处理 HTTP 请求和响应。但是,该包仅提供了基本的路由功能。如果您需要更高级的路由功...
    99+
    2023-09-23
    http shell path
  • 如何在Go语言中实现路由分组
    Go语言是一种简洁高效的编程语言,在Web开发领域也有广泛的应用。在Web开发中,路由是必不可少的部分。而路由分组则是一个更加高级的路由功能,它可以使代码更加清晰、简洁,提高代码可读性和可维护性。本文将从原理和代码实现两个方面,详细介绍如何...
    99+
    2023-12-18
    Go语言 (Go) 实现 (Implement) 路由分组 (Routing groups)
  • 如何在Go语言中实现路由中间件
    如何在Go语言中实现路由中间件,需要具体代码示例引言:在Go语言的Web开发中,路由是不可或缺的一部分。路由中间件是一种在请求到达目标处理函数之前执行的功能模块。它们可以对请求进行拦截、验证、记录等操作,从而帮助开发者处理一些通用功能,并提...
    99+
    2023-12-17
    路由 实现 中间件
  • Go 的编译器如何处理嵌套函数?
    问题内容 在 go 中编写嵌套函数时,编译器如何处理它?它是变成另一个函数并放在代码之外,还是在调用父函数时重新创建它? 例如: func funca() int { a :=...
    99+
    2024-02-05
    作用域
  • 如何在python中使用if嵌套命令
    如何在python中使用if嵌套命令?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。python主要应用领域有哪些1、云计算,典型应用OpenStack。2、WE...
    99+
    2023-06-14
  • EntityWrapper如何在and条件中嵌套or语句
    目录在and条件中嵌套or语句EntityWrapper的一些接口说明在and条件中嵌套or语句 想要写一个类似如下的语句: select * from table_1 w...
    99+
    2024-04-02
  • vue如何实现刷新之后嵌套路由不变并重新渲染页面
    这篇文章给大家分享的是有关vue如何实现刷新之后嵌套路由不变并重新渲染页面的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。解决嵌套路由刷新时,路由没有变化,正常情况下页面是不会重新...
    99+
    2024-04-02
  • 如何在Go语言中实现路由的版本控制
    如何在Go语言中实现路由的版本控制随着软件的迭代更新,特别是在Web开发过程中,版本控制已经成为了一个非常重要的问题。在Go语言中,我们可以通过一些简单的方法来实现路由的版本控制。本文将会介绍如何在Go中实现路由的版本控制,并且提供一些代码...
    99+
    2023-12-17
    Go语言 路由 版本控制
  • 如何在Go语言中实现路由的请求缓存
    如何在Go语言中实现路由的请求缓存在Web开发中,路由是一个非常重要的概念,用于将客户端请求映射到相应的处理程序。在高并发的情况下,频繁地处理请求可能会导致服务器性能下降。为了减轻服务器的负载和提高响应速度,可以对路由的请求进行缓存。在Go...
    99+
    2023-12-17
    Go语言 路由 请求缓存
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作