【问题标题】:Can I respond to POST requests using Jetty's ResourceHandler?我可以使用 Jetty 的 ResourceHandler 响应 POST 请求吗?
【发布时间】:2011-08-12 21:25:11
【问题描述】:

我可以使用 Jetty 的 ResourceHandler 响应 POST 请求吗?如果有,怎么做?

对于上下文,这里是使用 Jetty 教程中的 ResourceHandler 的 sn-p configuring a file server:

public class FileServer
{
    public static void main(String[] args) throws Exception
    {
        Server server = new Server();
        SelectChannelConnector connector = new SelectChannelConnector();
        connector.setPort(8080);
        server.addConnector(connector);

        ResourceHandler resource_handler = new ResourceHandler();
        resource_handler.setDirectoriesListed(true);
        resource_handler.setWelcomeFiles(new String[]{ "index.html" });

        resource_handler.setResourceBase(".");

        HandlerList handlers = new HandlerList();
        handlers.setHandlers(new Handler[] { resource_handler, new DefaultHandler() });
        server.setHandler(handlers);

        server.start();
        server.join();
    }
}

【问题讨论】:

    标签: jetty


    【解决方案1】:

    ResourceHandler 似乎只支持 GET 请求。这是有道理的,因为 ResourceHandler 只提供静态资源(文件、目录)。无论如何都会丢弃 POST 输入。

    我发现很难编造一个场景,需要 ResourceHandler 来回复 POST 请求,但是如果你真的想实现这一点,你可以编写自己的 Handler 来包装 ResourceHandler 并调用 GET 方法对于 POST 请求。可以在此处找到有关如何执行此操作的一些提示:http://www.eclipse.org/jetty/documentation/current/writing-custom-handlers.html#passing-request-and-response

    【讨论】:

    • 我有一个 scenario 给你...假设我们要针对predefined responses 测试一个程序以 POST 请求。一种解决方案可能是将预定义的响应分别保存到不同的文件。稍后在测试期间,我们使用ResourceHandler 提供的那些文件以方便(懒惰?)。
    • 可以在此处找到具有 POST 处理的自定义处理程序:stackoverflow.com/a/11285610/363573
    • 从 jetty-server-9.3.11.v20160721 开始,Resourcehandler 仅支持 GET 和 HEAD 方法。
    猜你喜欢
    • 2012-04-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-07
    • 1970-01-01
    • 2012-01-08
    • 1970-01-01
    • 2018-12-25
    相关资源
    最近更新 更多