0

所以这个欧巴的事情正在兴起。
我开始这样的服务器:

    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 -> 资源);title: string } /
'ca
(71:3-71:8) Server.handler
函数的第二个参数应该是
{ dispatch: (Uri.relative -> resource); title: string } / 'ca
代替
Server.handler

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

任何人都清楚为什么 dispatch_handler_fun 在这里不合适吗?
附言。抱歉代码格式不好:)

谢谢你

4

1 回答 1

2

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

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

于 2013-07-31T13:57:28.233 回答