加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

scala – 喷涂多条深度路径

发布时间:2020-12-16 19:10:54 所属栏目:安全 来源:网络整理
导读:我有4个基于URL的响应级别.因此对于: * GET on / abc – 响应应该是abc * GET on / abc / def – 响应应该是def * GET on / abc / def / ghi – 回应应该是ghi * GET on / abc / def / ghi / jkl – 响应应该(令人惊讶)jkl 所以我的问题是如何使用Spray.io
我有4个基于URL的响应级别.因此对于:
* GET on / abc – >响应应该是abc
* GET on / abc / def – >响应应该是def
* GET on / abc / def / ghi – >回应应该是ghi
* GET on / abc / def / ghi / jkl – >响应应该(令人惊讶)jkl

所以我的问题是如何使用Spray.io设计这种请求 – 响应属性?

我知道使用带路径的pathPrefix是可能的,但这仅适用于两个级别?
使用这种方法,它应该看起来像:

val route = {
  path("/abc") {
    // complete with response 'abc'
  } ~
  path("/abc/def") {
    // complete with response 'def'
  } ~
  path("/abc/def/ghi") {
    // complete with response 'ghi'
  } ~
  path("/abc/def/ghi/jkl") {
    // complete with response 'jkl'
  }
}

有没有办法“筑巢路径”?我知道这不起作用,但只是一个想法:

val route = {
  path("/abc") {
    // complete with response 'abc'
    'sub'path("/def") {
      // complete with response 'def'
      'sub'path("/ghi") {
        // complete with response 'ghi'
        'sub'path("/jkl") {
          // complete with response 'jkl'
        }
      }
    }
  }
}

或任何其他适当的嵌套路径?

最好,
zmeda

解决方法

我认为问题是关于如何做到两者,如果路径完成则在一个层面上完成某些事情,或者如果还有更多路径可用则更深入一层.

试试这个:

val route = {
  pathPrefix("abc") {
    // complete with response 'abc'
    pathEnd { complete("abc") } ~ // don't forget the twiggles
    pathPrefix("def") {
      pathEnd { complete("def") } ~
      pathPrefix("ghi") {
        pathEnd { complete("ghi") } ~
        path("jkl") { // path already includes pathEnd,path(x) = pathPrefix(x ~ PathEnd)
          complete("jkl")
        }
      }
    }
  }
}

顺便说一句.这与“/ abc /”等不匹配,即带有斜杠的路径.如果要强制匹配尾部斜杠,或者可选择使用pathSingleSlash或pathEndOrSingleSlash而不是pathEnd.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读