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
错误重新定位到内嵌文件中
如下所示
|
|
这样就能够解决问题了。