带有 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 中热重载静态文件?

带有自签名证书的 ktor 客户端 https 请求

如何使用 Ktor 和 Kotlin 下载带有进度指示器的大文件?

如何使用带有 ktor 框架的 graphql-kotlin 进行字段级解析器

如何在 IntelliJ IDEA 中为 Ktor 设置运行配置?

Django 应用程序不更新浏览器中的静态文件