Spec-Zone.ru › Crystal

HTTP-сервер

Вот пример немного поинтереснее — HTTP-сервер:

require "http/server"

server = HTTP::Server.new do |context|
  context.response.content_type = "text/plain"
  context.response.print "Hello world! The time is #{Time.local}"
end

address = server.bind_tcp 8080
puts "Listening on http://#{address}"
server.listen

Приведённый выше код станет понятен, когда вы прочитаете всю справочную документацию по языку, но уже сейчас мы можем узнать кое-что.

  • Вы можете подключать код, определённый в других файлах:

    require "http/server"
    
  • Вы можете объявлять локальные переменные, не указывая их тип:

    server = HTTP::Server.new(...)
    
  • Порт HTTP-сервера задаётся с помощью метода bind_tcp объекта HTTP::Server (в данном случае порт установлен в значение 8080).

    address = server.bind_tcp 8080
    
  • Программы создаются путём вызова методов (или отправки сообщений) объектам.

    HTTP::Server.new(...)
    # ...
    Time.local
    # ...
    address = server.bind_tcp 8080
    # ...
    puts "Listening on http://#{address}"
    # ...
    server.listen
    
  • Вы можете использовать блоки кода, или просто блоки, — это очень удобный способ повторно использовать код и применять некоторые возможности функционального программирования:

    HTTP::Server.new do |context|
      # ...
    end
    
  • Вы можете легко создавать строки со встроенным содержимым — это называется интерполяцией строк. В языке также предусмотрен другой синтаксис для создания массивов, хешей, диапазонов, кортежей и других структур:

    "Hello world! The time is #{Time.local}"
    

To the extent possible under law, the persons who contributed to this workhave waived
all copyright and related or neighboring rights to this workby associating CC0 with it.
https://crystal-lang.org/reference/1.2/getting_started/http_server.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API