Restlet路由的噩梦?

| 好的,这很荒谬:(或者我的设计可能是:) 这是我们使用的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
现在有趣的部分: 如果代码按上述顺序排序,则呼叫ѭ1with将被路由到带有wallName的第一条路由!从而得到405。 如果我将
/{projectName}/{wallName}
移到底部,则可以正确布线! 现在,这就是我所知道的: Restlet中的默认路由模式 是MODE_FIRST_MATCH。我将其设置为 MODE_BEST_MATCH和URL的顺序 仍然很重要!我无法进入 \'affinity \'得分来检查 问题/分数。匹配模式为Template.MODE_EQUALS。 那么问题是这样的:我是否必须关心如何在Java文件中订购URL?即使从维护的角度来看,这也很可怕。 有什么建议么?我应该重新设计我的网址吗?但是“结构”仍然倾向于相同,从而导致相同的问题     
已邀请:
\“ / {projectName} / {wallName} \”和\“ / {projectName} / WinCondition \”将同时获得FIRST_MATCH和BEST_MATCH相同的分数,因此它仍然是赢得路线列表中的第一个。 但这实际上是一个副作用,您通常不应该陷入困境。问题是,您似乎为相同的URI(例如\“ / myProject / WindCondition \”)建议了到两个不同资源类的两条路由。 您应该真正考虑重新设计URI以防止此类冲突。这是一个建议: / {projectName} / walls / {wallName} / {projectName} / winCondition / {projectName} / winCondition / {id] 否则,如果依赖路由顺序使您感到恐惧,则可以自定义默认路由逻辑以考虑计分的目标方法。     

要回复问题请先登录注册