2016-12-29 4 views
2

私はこの言語に少し慣れていて、非常に単純なHTTPサーバーでハッキングを開始したいと考えています。現在のコードは次のようになります:Crystal-lang serve index.html

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 

ここでの目標は、このようにディレクトリをリストしたくないということです。 URLバーにindex.htmlを配置することなく、が利用可能であれば、実際にはpublic/で提供したいと思っています。 public/index.htmlが実際に存在するとしましょう。便利なドキュメントへのポインタ

答えて

3

これは何か?

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