Gin 嵌入静态资源与路由冲突
文章目录
前言
上一篇文章讲了如何嵌入网页,但是在使用的时候碰到了路由冲突。
冲突
先来看下代码
|
|
我们把网页内容绑定到了 / ,内容显示正常。
但是这样做的后果就是所有的 GET 请求都会被 / 捕获,这时候使用 GET 绑定路由就会报错了。
一种解法是不使用 GET ,虽然能解决问题,但是很别扭也很不优雅。
另一种是把嵌入的网页内容绑定到一个特殊的路由,比如 public 或者 static 等等。这样就不会污染 GET 路由了。
但是这样做也会存在问题,假设我们内嵌的文件有 index.html 、 index.js 、 index.css
当我们请求 public/index.html 的时候内容可以请求下来,但是 js 和 css 就不能请求下来了,因为我们把它们的路由改成了 public/index.js 和 public/index.css 了,所以会报文件找不到。
解决冲突
找了一圈在Gin + go:embed 实现静态资源嵌入 - 两双筷子中找到一个不错办法,就是通过把 404 错误重新定位到内嵌文件中
如下所示
|
|
这样就能够解决问题了。