2016-12-08 2 views
1

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

ответ

2

Тип

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, что создаст ответ для вас от аргумента строки.

2

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

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

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

+2

Я заметил, что реализации, представленные на github, такие как TutorWebserver, используют '' 'диспетчерский сервер'', который нигде не присутствует в конюшне. Исходный код Web-сервера на самом деле не указывает, что тип данных, за которым следует скобка, является анонимной функцией, которая вызвала мое замешательство. Я не ожидал, что у Раскаля будут анонимные функции. –

+0

ах да, я вижу! Благодарю. – jurgenv

Смежные вопросы