【问题标题】:How to serve static files in Julia?如何在 Julia 中提供静态文件?
【发布时间】:2021-12-09 16:52:51
【问题描述】:

我正在尝试构建一个类似于 Flask 的小型服务器,并希望从中提供静态文件。我的第一个想法是 Genie.jl 可以做到这一点,但我没有看到任何关于 serving static files 的明确提及(除非我错过了)。

【问题讨论】:

  • 对于因为“需要更多关注”而投票太接近的人,需要多关注?除了“如何在 Julia 中提供静态文件?”之外,是否还有另一层特殊性?在这种情况下,这似乎是一个非常简单明了的问题......
  • 如果您不知道提供静态文件的含义,请参阅此处:stackoverflow.com/questions/28918845/…

标签: julia


【解决方案1】:

您可以简单地将静态文件放在创建的精灵应用程序的public 文件夹中。如果您查看此文件夹,您甚至会注意到 Genie 会自动将标准网页文件(例如 favicon.ico 或 robots.txt)放在那里。

考虑以下 Julia 会话:

julia> using Genie
julia> Genie.newapp("Demo1")
...

Ready!

┌ Info: 2021-10-24 02:56:09
└ Web Server starting at http://127.0.0.1:8000

Genie 启动时自动将位置更改为 web 应用文件夹(此处为 Demo1)。

让我们在Demo1/public 文件夹中创建一个示例静态文件:

open("public/static_sample.txt","w") do f;println(f,"Hello world!");end

现在我们准备测试该机制。在这里,我使用从 Julia 运行的 curl 工具,但您可以简单地将 url 复制粘贴到网络浏览器:

julia> run(`curl http://127.0.0.1:8000/static_sample.txt`)
Hello world!
Process(`curl http://127.0.0.1:8000/static_sample.txt`, ProcessExited(0))

【讨论】:

    【解决方案2】:

    使用 Genie 提供静态文件的最简单方法是使用 Genie.serve,如下所述:https://genieframework.github.io/Genie.jl/dev/API/genie.html#Genie.serve

    julia> Genie.serve("public", 8888, async = false, verbose = true)
    [ Info: Ready!
    [ Info: Listening on: 127.0.0.1:8888
    

    如果请求的文件存在,它将提供开箱即用的服务,如果不存在,它将返回 404 错误页面,如果路径是目录,则默认查找要提供的 index.html 文件。

    它没有列出目录中的文件 - 尽管我们可以在有用时添加它,作为一个选项。

    【讨论】:

      猜你喜欢
      • 2015-11-03
      • 2020-10-08
      相关资源
      最近更新 更多