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
}
}
}
我需要什么额外配置?
您的配置有两个问题:
- 您有
micronaut.router.static-resources.enabled
,但应该是 micronaut.router.static-resources.default.enabled
。所以 default
不见了。
- 您正在将存储在 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
上访问了
我有一个小型 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
}
}
}
我需要什么额外配置?
您的配置有两个问题:
- 您有
micronaut.router.static-resources.enabled
,但应该是micronaut.router.static-resources.default.enabled
。所以default
不见了。 - 您正在将存储在 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
上访问了