有没有办法在不更改war文件的情况下解锁所有http方法?

时间:2017-07-07 21:05:54

标签: jetty

我在Jetty中部署了.war文件(我没有构建它,并且无法创建新实例)。

http://example.com/rest/object/{uuid}的OPTIONS请求以HEAD, DELETE, GET, OPTIONS回复。建立战争的人声称他们的档案不是问题。

是否有Jetty配置文件我可以更改以允许所有http方法?

如果这是我必须在Jetty Java文件中做的事情,我是Jetty noob,所以请详细说明,或者指出一些我可以阅读的文档。

注意:我可以通过CURL POST,但不能通过http ...

编辑:(我使用CURL发布到不同的端点)

1 个答案:

答案 0 :(得分:2)

这不是我发布的问题的答案,但它让我了解发生了什么,这导致问题与我的特定问题无关。话虽如此,我还是没有把它标记为答案,如果它是可以回答的(我不认为它是,你会在一分钟内看到原因)。功能

简短回答是我尝试POST到需要该对象已存在的端点:

http://example.com/rest/object/{uuid}

我应该做的是使用端点,如果你发布POST,它会理解你想要创建一个新对象:

http://example.com/rest/object

答案越长

让我们假设您有一个REST端点,允许您获取特定对象,如下所示:

http://example.com/rest/object/{uuid}

由于您正在处理特定对象,因此您通常不希望在那里发布新对象。 POST意味着创建一个新对象'。如果你 能够在那里发帖,你基本上就会覆盖那个对象......那就是PUT的用途,but it's debatable。此外,PUT也不是一个选择......

因此,由于其主观性,一些Web Services限制请求方法,因此您必须按照架构师的意图进行操作。我运行的REST服务器并没有太多的文档,所以我没有意识到这些限制,我仍然对此感到困惑。

我以为我在做什么是说"好的,我想用这个id创建一个对象。因此,如果我将数据发布到特定的UUID,服务器将知道我想创建一个新对象。"我应该说的是"好的,我想创建一个新对象。它已经在数据中定义了UUID,因此我需要做的就是将它发送到处理这些对象的端点,并期望POST。"像这样:

http://example.com/rest/object
相关问题