全部学科
NodeJS全栈
nodejs
Python全栈
python
小程序首页
📝 1 篇文章 15 道配套习题

路由配置与RESTful风格专题

专题说明

本专题聚焦Gin框架的路由配置机制,涵盖路由注册、路由分组、静态文件服务与RESTful设计原则。掌握路由配置是构建规范API的基础。

学习目标

  1. 掌握GET、POST、PUT、DELETE等路由注册方法
  2. 学会使用路由分组管理API结构
  3. 掌握静态文件服务配置
  4. 理解RESTful路由设计原则与路由冲突处理

学习内容

  • 基本路由注册(GET、POST、PUT、DELETE)
  • 路径参数与通配符路由
  • 路由分组与中间件挂载
  • 静态文件服务(Static、StaticFile、StaticFS)
  • RESTful设计原则
  • 路由冲突检测与匹配优先级
  • Any与匹配多方法路由

学习建议

  1. 重点理解路由分组的作用,便于统一管理中间件
  2. 注意动态参数路由在同位置不能重复命名
  3. RESTful设计时注意HTTP方法语义的正确使用
  4. 静态文件路径与API路径要规划好避免冲突

📝 发现内容有误?点击此处直接编辑

📝 配套习题(15 题)

1
单选题

在Gin框架中,以下哪个方法用于配置静态文件服务目录?

A

r.StaticFile("/static", "./assets")

B

r.Static("/static", "./assets")

C

r.LoadHTMLFiles("./assets")

D

r.ServeFile("/static", "./assets")

2
判断题

在Gin框架中,配置r.Static("/assets", "./public")后,访问/assets/images/logo.png会映射到服务器的./public/images/logo.png文件。

A

B

3
单选题

以下哪种方式可以正确注册一个GET请求的路由?

A

r.HandleFunc("GET", "/users", handler)

B

r.GET("/users", handler)

C

r.Route("/users").GET(handler)

D

r.AddRoute("GET", "/users", handler)

4
判断题

gin.New()gin.Default()的区别在于,gin.Default()会自动附加Logger和Recovery中间件,而gin.New()创建的是不带任何中间件的纯净Engine实例。

A

B

5
单选题

在Gin中,路由定义为r.GET("/users/:id"),如何在handler中获取URL路径中的id参数?

A

c.Query("id")

B

c.Param("id")

C

c.Get("id")

D

c.PostForm("id")

6
单选题

在Gin路由中,以下哪个通配符可以匹配多级路径?

A

:path

B

*path

C

{path}

D

**path

7
多选题

对于请求GET /users/123/profile?tab=settings&page=1,以下哪些方法可以正确获取参数?(路由定义为r.GET("/users/:id/profile")

A

c.Param("id")获取"123"

B

c.Query("tab")获取"settings"

C

c.Query("page")获取"1"

D

c.Param("tab")获取"settings"

8
单选题

当同时定义以下路由时,请求GET /users/me会匹配哪个路由?

Go
r.GET("/users/:id", handlerA)
r.GET("/users/me", handlerB)
r.GET("/users/*action", handlerC)
A

handlerA(动态路由优先)

B

handlerB(静态路由优先)

C

handlerC(通配符路由优先)

D

报错,路由冲突

9
单选题

在Gin中,以下哪种方式可以实现HTTP重定向?

A

c.Redirect(301, "/new-path")

B

c.Location("/new-path")

C

c.Move("/new-path")

D

c.RedirectTo("/new-path")

10
多选题

对于以下路由配置,请求GET /files/docs/readme.md会匹配哪些路由?(假设所有路由都能单独匹配)

Go
r.GET("/files/*filepath", handlerA)
r.GET("/files/:name", handlerB)
r.GET("/files/readme.md", handlerC)
A

最终匹配handlerA(通配符匹配多级)

B

最终匹配handlerB(动态参数匹配)

C

最终匹配handlerC(静态路由匹配)

D

如果只有handlerA,可以匹配

11
单选题

以下哪个路由设计符合RESTful风格规范?

A

r.GET("/getUserById/:id")

B

r.GET("/users/:id")

C

r.GET("/api/v1/queryUser")

D

r.GET("/user-info/:id")

12
多选题

以下哪些HTTP方法与操作的对应关系符合RESTful规范?

A

GET用于获取资源,不应修改数据

B

POST用于创建新资源

C

PUT用于部分更新资源

D

DELETE用于删除资源

13
判断题

在RESTful API设计中,将版本号放在URL路径中(如/v1/users)是一种推荐的版本管理方式。

A

B

14
填空题

在Gin框架中,设计RESTful风格的用户订单API,路由定义为r.GET("/users/:userId/orders/:orderId"),请求GET /users/123/orders/456时,使用________________________获取用户ID,使用________________________获取订单ID。

15
判断题

在Gin框架中,同时注册r.GET("/users/:id")r.GET("/users/:name")会导致路由冲突错误,因为两个动态参数路由在同一路径位置冲突。

A

B

← 上一个专题 请求参数绑定与校验专题
下一个专题 → 部署与配置管理专题

📝 发现内容有误?点击此处直接编辑

想查看更多习题和详细解析?
小程序提供完整的题库和详细解析

长按或扫描二维码,立即体验

扫码体验小程序
马上就来
使用微信扫描二维码
立即体验完整题库