Micronaut:公开资源中的文件

Micronaut: Make files inside resources publicly available

我有一个小型 micronaut 应用程序,我需要在其中提供 resources 中的文件。这些文件应该可以公开访问,所以如果我为该文件输入 url,它将直接在浏览器中打开(它们是小图像)。

我试过使用

micronaut:
  application:
    name: myapp
  router.static-resources:
    enabled: true
    paths: classpath:data
    mapping: "/**"

但响应始终相同:

{
  "message": "Page Not Found",
  "_links": {
    "self": {
      "href": "/data/per.svg",
      "templated": false
    }
  }
}

我需要什么额外配置?

您的配置有两个问题:

  1. 您有 micronaut.router.static-resources.enabled,但应该是 micronaut.router.static-resources.default.enabled。所以 default 不见了。
  2. 您正在将存储在 class 路径中 data 目录中的静态资源映射到根 / 网络路径。因此,您可以在 http://localhost:8080/per.svg.[=29= 上访问 per.svg 文件]

但是最好使用单独的上下文然后使用 root 以防止与控制器路径发生冲突。因此,您可以将其映射到 static 例如:

micronaut:
  application:
    name: myapp
  router:
    static-resources:
      default:
        enabled: true
        mapping: "/static/**"
        paths: classpath:data

然后就可以在http://localhost:8080/static/per.svg

上访问了