【发布时间】:2017-01-03 17:00:39
【问题描述】:
我正在尝试在 Jetty 上构建一个 api 服务器。
我希望在类似于 /apis/api1/endpoint、/apis/api2/endpoint、/apis/api3/endpoint 等的路由上拥有多个 api
本质上,我有一个 HandlerWrapper,它包含一个 ContextHandlerCollections 的 HandlerList,本质上就是这样:
public void handle(...) {
if (uri.startsWith("/apis/")) {
log.info("This is an api request");
this.getHandlerList.handle(...)
} else {
super.handle()
}
}
private HandlerList getHandlerList() {
HandlerList handlerList = new HandlerList();
ContextHandlerCollection contextHandlerCollection = new ContextHandlerCollection();
ContextHandler api1 = new ContextHandler("/apis/api1/endpoint");
api1.setHandler(new Api1Handler());
contextHandlerCollection.addHandler(api1);
handlerList.addHandler(contextHandlerCollection);
return handlerList
}
现在当我尝试这样做时:
curl localhost:port/apis/api1/endpoint
我收到 404 未找到,但我在日志中看到“这是一个 api 请求”语句。
有什么提示吗?
我基本上希望每个 api1、api2 等都有一个 ContextHandlerCollection。ContextHandlerCollection 应该由一组特定于端点的处理程序组成以供选择。
我错过了什么?
干杯,
【问题讨论】:
标签: java jetty embedded-jetty