В настоящее время я работаю над стабильной версией Rascal, и я хочу создать веб-сервер Rascal, чтобы обслуживать мои html-шаблоны с функциями javascript. Глядя на модуль Webserver, я не вижу, как использовать функцию serve для использования веб-сервера. Он запрашивает местоположение (я предполагаю, что это будет что-то вроде |http://localhost:8080|
) и обратный вызов, который имеет тип Response (Request)
, но что это за тип? Я не знаю, как создать такой тип и что это такое.Rascal Используя веб-серверный модуль
ответ
Тип
Response (Request) callbackявляется функцией, например:
Response (Request r) { return response(...); }
Эта функция анонимная функция (она не имеет названия), которые вы можете передать в функцию служить в качестве аргумента, вы также можете определить его как нормальную функцию с именем и просто поместите имя этой функции в качестве аргумента.
Так что это, вероятно, работать:
serve(|http://localhost:8080|, Response (Request r){ return response("Hello world"); }):
Поскольку существует фабричный метод
Response response(str content)в Webserver.rsc, что создаст ответ для вас от аргумента строки.
В отсутствие документации об этом модуле все, что вы можете сделать, это прочитать источник. В браузере Eclipse доступны библиотеки (обозначены маленькими значками jar), и вы найдете здесь util::Webserver
с определением типов .
В основном Request
- это функция обратного вызова со всеми заголовками HTTP и другими параметрами, а Response
- это оболочка с альтернативными типами ответов (файлы, строки и т. Д.).
Обратите внимание, что текущая версия немного отличается от используемой вами стабильной версии, поэтому чтение кода на github не поможет.
- 1. Как установить Rascal
- 2. Структуры данных в Rascal
- 3. Rascal MPL Treemap squarification
- 4. Использование Rascal MAP
- 5. Довольно печать АСТ Rascal
- 6. Layout в Rascal
- 7. Building Rascal из источника
- 8. Разбор комментариев в Rascal
- 9. Бетонный Синтаксис Matching в Rascal
- 10. Общие типы (& T) в Rascal
- 11. Вращающиеся числа, используя модуль
- 12. Соответствие нераспаковывающемуся пространству в Rascal
- 13. Rascal ошибка при определении грамматики
- 14. шаблон соответствия AST узлов Rascal
- 15. Выполняет ли Rascal оптимизацию хвоста?
- 16. Rascal fetch методы без комментариев
- 17. Параметры типа LabeledGraph в Rascal
- 18. Обработка лексических программ в Rascal
- 19. Запуск программы Rascal извне REPL
- 20. Rascal медленно при импорте модулей
- 21. Параметры типа печати в Rascal
- 22. Hover tooltiptext in Rascal figure
- 23. Предиктивный редактор для грамматики Rascal
- 24. Добавить текстовый файл в лексику в Rascal
- 25. Инъекционного модуль, который содержит впрыскиваются модуль, используя Mef2
- 26. Выход усечен в Rascal Commandline REPL
- 27. Rascal - переписать AST с помощью посетителя
- 28. rascal зависает, когда я пытаюсь отлаживать программу
- 29. Как определить общую (полиморфную) функцию в Rascal?
- 30. Выход дерева (под) синтаксического анализа в Rascal
Я заметил, что реализации, представленные на github, такие как TutorWebserver, используют '' 'диспетчерский сервер'', который нигде не присутствует в конюшне. Исходный код Web-сервера на самом деле не указывает, что тип данных, за которым следует скобка, является анонимной функцией, которая вызвала мое замешательство. Я не ожидал, что у Раскаля будут анонимные функции. –
ах да, я вижу! Благодарю. – jurgenv