Rascal Использование модуля веб-сервера

В настоящее время я работаю над стабильной версией Rascal и хочу создать веб-сервер Rascal для обслуживания моих html-шаблонов функциями javascript. Глядя на модуль веб-сервера, я не вижу, как использовать функцию serve для использования веб-сервера. Он запрашивает местоположение (я предполагаю, что это будет что-то вроде |http://localhost:8080|) и обратный вызов, который имеет тип Response (Request) но что это за тип? Я не знаю, как создать этот тип шрифта и что это такое.

2 ответа

Решение

Тип

 Ответ (запрос) обратного вызова 
это функция, например:

Ответ (Запрос r) { 
    обратный ответ (...);
}

Эта функция является анонимной функцией (у нее нет имени), которую вы можете передать в функцию serve в качестве аргумента, вы также можете определить ее как обычную функцию с именем и просто поставить имя этой функции в качестве аргумента.

Так что это, вероятно, будет работать:

служить (| HTTP:// локальный:8080|, 
           Ответ (Запрос r) { 
               обратный ответ ("Привет, мир"); 
           }):

Так как есть фабричный метод

 Ответный ответ (содержание str) 
в Webserver.rsc это создаст для вас ответ из строкового аргумента.

В отсутствие документации по этому модулю все, что вы можете сделать, это прочитать исходный код. В браузере Eclipse библиотеки доступны (обозначены маленькими иконками jar), и вы найдете util::Webserver там с определением Response а также Request типы.

В принципе Request является функцией обратного вызова со всеми заголовками HTTP и прочее в качестве параметров и Response является оберткой с альтернативными типами ответов (файлы, строки и т. д.).

Обратите внимание, что текущая версия немного отличается от используемой стабильной версии, поэтому чтение кода на github мало чем поможет.

Другие вопросы по тегам