Rascal 使用网络服务器模块

Rascal Using the webserver module

我目前正在开发 Rascal 的稳定版本,我想生成 Rascal 网络服务器来为我的 html 模板提供 javascript 功能。 查看 Webserver 模块我看不出如何使用 serve 函数来使用 webserver。它要求一个位置(我假设该位置类似于 |http://localhost:8080|)和一个类型为 Response (Request) 的回调,但该类型是什么?我不知道如何创建这种类型以及它到底是什么。

在没有关于此模块的文档的情况下,您所能做的就是阅读源代码。在 Eclipse 浏览器中,可以访问这些库(用小 jar 图标表示),您会在其中找到 util::Webserver 以及 ResponseRequest 类型的定义。

基本上 Request 是一个回调函数,所有 HTTP headers 和东西作为参数,Response 是一个具有替代响应类型(文件、字符串等)的包装器。

请注意,当前版本与您使用的稳定版本有很大不同,因此阅读 github 上的代码不会有太大帮助。

类型

Response (Request) callback
是一个函数,例如:

Response (Request r) { 
    return response(...);
}

这个函数是一个匿名函数(它没有名字),你可以把它作为一个参数传递给服务函数,你也可以把它定义成一个有名字的普通函数,把那个函数的名字写进去作为参数。

所以这可能会起作用:

serve(|http://localhost:8080|, 
           Response (Request r){ 
               return response("Hello world"); 
           }):

由于 Webserver.rsc 中有一个工厂方法

Response response(str content)
,它将根据字符串参数为您创建一个响应。