带有 ktor 的静态目录 - 不在“mysite.com/static/...”下
Posted
技术标签:
【中文标题】带有 ktor 的静态目录 - 不在“mysite.com/static/...”下【英文标题】:Static directory with ktor - not under "mysite.com/static/..." 【发布时间】:2020-12-21 04:39:14 【问题描述】:我通读了Serving Static Content 并且脑子有问题。
我有一个文件夹/resources/static
。它里面有静态的东西。其中一些是 index.html、favicon.ico、css 文件夹、js 文件夹等。
我希望它显示为https://example.org/favicon.ico、https://example.org/(默认为 index.html)等。
文档中的所有示例均针对显示为 https://example.org/static/index.html 的网站
我不明白“静态”、“资源”、“资源”、“文件”之间的区别
routing
static("static")
files("css")
files("js")
file("image.png")
file("random.txt", "image.png")
default("index.html")
【问题讨论】:
【参考方案1】:static("static") - 这表示当客户端请求 [your_host]/static 时,然后使用静态处理程序来处理请求。 每个配置的处理程序将按顺序运行,直到第一个匹配,因此如果 css 目录下没有文件匹配请求,则下一个将运行。
files("css") - 这告诉静态处理程序在本地查找名为 css 的文件夹以提供静态内容(即客户端请求 [your_host]/static/style.css 将得到 [app_directory]/css/样式.css
file("image.png") - 这告诉静态处理程序返回本地文件以提供静态内容(即客户端请求 [your_host]/static/* 将得到 [app_directory]/image.png
default("index.html") - 这将为任何请求提供本地文件 [app_directory]/index.html [your_host]/static/*
resource、resources 和 defaultResource 做同样的事情,只是用于应用程序内置的资源,而不是文件系统上的资源。
【讨论】:
【参考方案2】:这可能已经做到了。
static("/")
resources(resourcePackage = "static")
defaultResource(resource = "index.html", resourcePackage = "static")
【讨论】:
以上是关于带有 ktor 的静态目录 - 不在“mysite.com/static/...”下的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 Ktor 和 Kotlin 下载带有进度指示器的大文件?
如何使用带有 ktor 框架的 graphql-kotlin 进行字段级解析器