gpt4 book ai didi

java - ReSTLet 路由噩梦?

转载 作者:行者123 更新时间:2023-11-30 07:33:42 25 4
gpt4 key购买 nike

好吧,这太荒谬了:(或者我的设计可能是:)

以下是我们使用的 URL:


/{projectName}/{wallName} - GET only: fetch all win conditions posted to the all
/{projectName}/WinCondition - POST a new Win Condition
/{projectName}/WinCondition/{id} - GET, PUT & DELETE

现在是有趣的部分:

如果代码按上述顺序调用 POST:/myProject/WinCondition 将被路由到具有 wallName 的第一条路线!从而获得 405。

如果我将 /{projectName}/{wallName} 移动到底部,那么它会被正确路由!

现在这是我所知道的:

  • ReSTLet中的默认路由模式是 MODE_FIRST_MATCH。我把它设置为MODE_BEST_MATCH 和 URL 的顺序仍然很重要!我无法访问“亲和性”分数来检查是什么问题/分数。匹配模式为Template.MODE_EQUALS。

那么问题是:我是否必须关心如何在我的 java 文件中对 URL 进行排序????即使从维护的角度来看,这也很可怕。

有什么建议吗?我应该重新设计我的网址吗??但是“结构”仍然趋于相同,导致同样的问题

最佳答案

"/{projectName}/{wallName}"和 "/{projectName}/WinCondition"将在 FIRST_MATCH 和 BEST_MATCH 中获得相同的分数,因此它仍然是路线列表中的第一个获胜者。

但这确实是一个副作用,一般来说您不应该让自己陷入其中。问题在于,您似乎为相同的 URI(例如“/myProject/WindCondition”)提出了通往两个不同资源类的两条路线。

您真的应该考虑重新设计您的 URI 以防止此类冲突。这是一个建议:

  • /{projectName}/walls/{wallName}
  • /{项目名称}/winCondition
  • /{projectName}/winCondition/{id]

否则,如果依赖路由顺序让您感到害怕,可以自定义默认路由逻辑以考虑评分的目标方法。

关于java - ReSTLet 路由噩梦?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5682226/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com