Opalang并发出Server.start()参数问题

时间:2013-07-30 23:29:30

标签: opa

所以这个Opa的事情正在好转 我正在启动这样的服务器:

    function resource request_dispatch(Uri.relative p_url,
                                       p_log_fun) {
            //type Uri.relative = {list(string) path, list((string,string)) query }
            match (p_url) {
                case {path: [] ... }              : get_standard_page(p_log_fun);
                case {path: ["_rest_" | path] ...}: api_request_handler(path,p_log_fun);
                case {~path ...}                  : Resource.page("Regular",<div>standard page</div>);
            }
        }     
function start_server(p_log_fun) {
            function resource dispatch_handler_fun(Uri.relative p_url) {
                request_dispatch(p_url,p_log_fun)
            }
            Server.start(Server.http,
                         { title   : "Hello, world",
                           dispatch:dispatch_handler_fun})
        }

但是我得到了:

  

错误:文件“src / posts_viewer.opa”,第71行,字符3-150,   (71:3-74:42 | 2466-2613)
  输入冲突
  (72:10-74:41){dispatch:(Uri.relative - &gt; resource); title:string} /
                        “C.A
  (71:3-71:8)Server.handler
       函数的第二个参数应为类型
         {dispatch:(Uri.relative - &gt; resource); title:string} /    “C.A
  而不是   Server.handler

所以它显然dispatch_handler_fun的类型签名不正确。 在API文档中,我可以在变体中看到Server.handler http://doc.opalang.org/type/stdlib.core.web.server/Server/handler

是否有人清楚为什么dispatch_handler_fun不合适? PS。抱歉造成错误的代码格式化:)

谢谢

1 个答案:

答案 0 :(得分:2)

变体类型{title, dispatch}中没有Server.handler,只有{string title, (→ xhtml) page}{ (Uri.relative → resource) dispatch }(没有标题字段)。

原因标题与page相关联,而不是dispatchpage只返回xhtml正文,而不包含HTML标题。服务器需要一些额外的数据作为页面的标题。您使用的dispatch函数返回附加了一些额外数据的资源,无需将其提供给服务器两次。您已经在示例中使用了函数Resource.page(),它将标题作为第一个参数。