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



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

http://example.com/rest/object/{uuid}的选项请求以HEAD, DELETE, GET, OPTIONS响应。制造战争的人声称这不是他们的档案问题。

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

如果这是我必须在 Jetty Java 文件中做的事情,我是一个 Jetty 菜鸟,所以请啰嗦,或者指出一些我可以阅读的文档。

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

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

这不是对我发布的问题的答案,但它让我了解发生了什么,这导致问题与我的特定问题无关。话虽如此,如果它是可回答的,我不会将其标记为答案(我认为不是,你会在一分钟内明白为什么(。

简短的回答是我试图 POST 到期望对象已经存在的端点:

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

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

http://example.com/rest/object

更长的答案

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

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

由于您正在处理特定对象,因此通常不希望在那里发布新对象。POST 表示"创建新对象"。如果你能够在那里发布,你基本上会覆盖那个对象......这就是PUT的用途,但值得商榷。此外,PUT也不是一种选择...

因此,由于其主观性质,某些 Web 服务会限制请求方法,因此您必须按照架构师的预期方式执行此操作。我正在运行的 REST 服务器没有太多的文档,所以我不知道这些限制,并且仍然对此感到困惑。

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

http://example.com/rest/object

最新更新