Http Crystal lang serve index.html

Http Crystal lang serve index.html,http,crystal-lang,Http,Crystal Lang,我对这门语言有点陌生,我想开始破解一个非常简单的HTTP服务器。我当前的代码如下所示: require "http/server" port = 8080 host = "127.0.0.1" mime = "text/html" server = HTTP::Server.new(host, port, [ HTTP::ErrorHandler.new, HTTP::LogHandler.new, HTTP::StaticFileHandler.new("./public"),

我对这门语言有点陌生,我想开始破解一个非常简单的HTTP服务器。我当前的代码如下所示:

require "http/server"

port = 8080
host = "127.0.0.1"
mime = "text/html"

server = HTTP::Server.new(host, port, [
  HTTP::ErrorHandler.new,
  HTTP::LogHandler.new,
  HTTP::StaticFileHandler.new("./public"),
  ]) do |context|
  context.response.content_type = mime
end

puts "Listening at #{host}:#{port}"
server.listen
我在这里的目标是,我不想列出目录,因为这样就可以了。如果
public/
上有
index.html
,我实际上想提供
index.html
,而不必将
index.html
放在URL栏中。让我们假设
index.html
确实存在于
public/
中。有可能有用的文档指针吗?

类似这样的东西吗

require "http/server"

port = 8080
host = "127.0.0.1"
mime = "text/html"

server = HTTP::Server.new(host, port, [
  HTTP::ErrorHandler.new,
  HTTP::LogHandler.new,
]) do |context|
  req = context.request

  if req.method == "GET" && req.path == "/public"
    filename = "./public/index.html"
    context.response.content_type = "text/html"
    context.response.content_length = File.size(filename)
    File.open(filename) do |file|
      IO.copy(file, context.response)
    end
    next
  end

  context.response.content_type = mime
end

puts "Listening at #{host}:#{port}"
server.listen