Crystal-lang 无重载匹配 'HTTP::Server.new' 类型为 Int32 的 http 服务器
Crystal-lang no overload matches 'HTTP::Server.new' with type Int32 http server
我是 Crystal-lang 的新手。
我正在尝试 crystal-lang 文档中给出的 Http Server 示例。
require "http/server"
server = HTTP::Server.new(8080) do |context|
context.response.content_type = "text/plain"
context.response.print "Hello world! The time is #{Time.now}"
end
puts "Listening on http://127.0.0.1:8080"
server.listen
当我 运行 此代码时,出现以下错误。
Error in httpserv.cr:3: no overload matches 'HTTP::Server.new' with type Int32
Overloads are:
- HTTP::Server.new(handlers : Array(HTTP::Handler), &handler)
- HTTP::Server.new(&handler)
- HTTP::Server.new(handlers : Array(HTTP::Handler))
- HTTP::Server.new(handler : HTTP::Handler | HTTP::Handler::Proc)
server = HTTP::Server.new(8080) do |context|
我可以从中收集到的是我需要指定一些 methods/functions 来处理 HTTP 请求,但我不知道如何去做。
我的问题是正确的做法是什么?
提前致谢。
HTTP::Server
API 已在最新版本 Crystal 0.25.0 中更改。它的使用记录在最近的 API docs 中(0.25.0 版本文档有一个小错误,但它已在 master 上修复)。
从报错信息可以看出,Server.new
的签名发生了变化。它现在只接受某种形式的处理程序。您已经在 do
块的示例中定义了它。构造函数不再接受端口号,但需要单独调用#bind_tcp
。
您的示例现在应如下所示:
require "http/server"
server = HTTP::Server.new do |context|
context.response.content_type = "text/plain"
context.response.print "Hello world! The time is #{Time.now}"
end
address = server.bind_tcp 8080
puts "Listening on http://#{address}"
server.listen
我是 Crystal-lang 的新手。
我正在尝试 crystal-lang 文档中给出的 Http Server 示例。
require "http/server"
server = HTTP::Server.new(8080) do |context|
context.response.content_type = "text/plain"
context.response.print "Hello world! The time is #{Time.now}"
end
puts "Listening on http://127.0.0.1:8080"
server.listen
当我 运行 此代码时,出现以下错误。
Error in httpserv.cr:3: no overload matches 'HTTP::Server.new' with type Int32
Overloads are:
- HTTP::Server.new(handlers : Array(HTTP::Handler), &handler)
- HTTP::Server.new(&handler)
- HTTP::Server.new(handlers : Array(HTTP::Handler))
- HTTP::Server.new(handler : HTTP::Handler | HTTP::Handler::Proc)
server = HTTP::Server.new(8080) do |context|
我可以从中收集到的是我需要指定一些 methods/functions 来处理 HTTP 请求,但我不知道如何去做。
我的问题是正确的做法是什么?
提前致谢。
HTTP::Server
API 已在最新版本 Crystal 0.25.0 中更改。它的使用记录在最近的 API docs 中(0.25.0 版本文档有一个小错误,但它已在 master 上修复)。
从报错信息可以看出,Server.new
的签名发生了变化。它现在只接受某种形式的处理程序。您已经在 do
块的示例中定义了它。构造函数不再接受端口号,但需要单独调用#bind_tcp
。
您的示例现在应如下所示:
require "http/server"
server = HTTP::Server.new do |context|
context.response.content_type = "text/plain"
context.response.print "Hello world! The time is #{Time.now}"
end
address = server.bind_tcp 8080
puts "Listening on http://#{address}"
server.listen