首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Tink Web中使用静态中间件

在Tink Web中使用静态中间件
EN

Stack Overflow用户
提问于 2019-05-22 12:38:27
回答 2查看 190关注 0票数 4

我要申报两条路线。第一种,"/api"将提供一些REST内容,而另一种,"/static"应该提供静态内容。

我试着从快速开始的样本开始,但我不知道怎么做。

代码语言:javascript
复制
import tink.http.containers.*;
import tink.http.Response;
import tink.web.routing.*;

class Server {
    static function main() {
        var container = new NodeContainer(8080);
        var router = new Router<Root>(new Root());
        container.run(function(req) {
            return router.route(Context.ofRequest(req))
                .recover(OutgoingResponse.reportError);
        });
    }
}

class Root {
    public function new() {}

    @:get('/')
    @:get('/$name')
    public function hello(name = 'World')
        return 'Hello, $name!';
}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-05-24 08:25:54

首先,我必须使用git版本的tink_http_middleware和asys。

代码语言:javascript
复制
-lib tink_web
-lib hxnodejs
-lib tink_http_middleware:git:https://github.com/haxetink/tink_http_middleware.git
-lib asys:git:https://github.com/benmerckx/asys.git
-main server.Api
-js www/api/api.js

接下来,“KevinResoL”的回答很有帮助,我只改变了一件事。staticMiddleware.apply(handler)

代码语言:javascript
复制
package server;

import tink.http.Handler;
import tink.http.middleware.Static;
import tink.http.containers.*;
import tink.http.Response;
import tink.web.routing.*;

class Api {
    public static function main() {

        var container = new NodeContainer(8080);
        var router = new Router<ApiRoute>(new ApiRoute());
        var staticMiddleware = new Static("..","/");
        var handler:Handler = req -> router.route(Context.ofRequest(req)).recover(OutgoingResponse.reportError);
        container.run(staticMiddleware.apply(handler));
    }
}

class ApiRoute {
    public function new() { }

    @:sub public var api:Root = new Root();
}

class Root {

    public function new() { }

    @:get('/')
    @:get('/$name')
    public function serve(name = 'index.html')
        return 'Hello, $name!';
}
票数 1
EN

Stack Overflow用户

发布于 2019-05-22 14:45:24

对于/static,您可以使用来自中间件Static

对于/api,您可以使用@:sub路由。

代码语言:javascript
复制
import tink.http.containers.*;
import tink.http.Handler;
import tink.http.Response;
import tink.http.middleware.Static;
import tink.web.routing.*;

class Server {
    static function main() {
        var container = new NodeContainer(8080);
        var router = new Router<Api>(new Api());
        var handler:Handler = req -> router.route(Context.ofRequest(req)).recover(OutgoingResponse.reportError);
        container.run(handler.applyMiddleware(new Static('public_html', '/static')));
    }
}

class Api {
    @:sub public var api:Root = new Root();
}

class Root {
    public function new() {}

    @:get('/')
    @:get('/$name')
    public function hello(name = 'World')
        return 'Hello, $name!';
}
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56257001

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档