Micronaut:使资源内的文件公开可用

问题描述

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

我尝试使用

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. 您正在将存储在类路径中 data 目录中的静态资源映射到根 / Web路径。因此,您可以访问 http:// localhost:8080 / per.svg 上的 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

上访问它

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...